Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
406d338a
Commit
406d338a
authored
Aug 21, 2018
by
Savorboard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update samples
parent
5be6739c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
67 additions
and
47 deletions
+67
-47
ValuesController.cs
samples/Sample.Kafka.MySql/Controllers/ValuesController.cs
+32
-18
Startup.cs
samples/Sample.Kafka.MySql/Startup.cs
+4
-3
ValuesController.cs
...s/Sample.RabbitMQ.MongoDB/Controllers/ValuesController.cs
+29
-23
ValuesController.cs
...les/Sample.RabbitMQ.MySql/Controllers/ValuesController.cs
+2
-3
No files found.
samples/Sample.Kafka.MySql/Controllers/ValuesController.cs
View file @
406d338a
using
System
;
using
System.Threading.Tasks
;
using
Dapper
;
using
DotNetCore.CAP
;
using
Microsoft.AspNetCore.Mvc
;
using
MySql.Data.MySqlClient
;
...
...
@@ -7,37 +7,51 @@ using MySql.Data.MySqlClient;
namespace
Sample.Kafka.MySql.Controllers
{
[
Route
(
"api/[controller]"
)]
public
class
ValuesController
:
Controller
,
ICapSubscribe
public
class
ValuesController
:
Controller
{
private
readonly
ICapPublisher
_capBus
;
public
ValuesController
(
ICapPublisher
produc
er
)
public
ValuesController
(
ICapPublisher
capPublish
er
)
{
_capBus
=
produc
er
;
_capBus
=
capPublish
er
;
}
[
Route
(
"~/
publish
"
)]
public
async
Task
<
IActionResult
>
PublishMessage
()
[
Route
(
"~/
without/transaction
"
)]
public
IActionResult
WithoutTransaction
()
{
using
(
var
connection
=
new
MySqlConnection
(
"Server=192.168.10.110;Database=testcap;UserId=root;Password=123123;"
))
{
connection
.
Open
();
var
transaction
=
connection
.
BeginTransaction
();
//your business code here
_capBus
.
Publish
(
"sample.rabbitmq.mysql"
,
DateTime
.
Now
);
await
_capBus
.
PublishAsync
(
"xxx.xxx.test2"
,
123456
);
return
Ok
();
}
transaction
.
Commit
();
[
Route
(
"~/adonet/transaction"
)]
public
IActionResult
AdonetWithTransaction
()
{
//NOTE: Add `IgnoreCommandTransaction=true;` to your connection string, see https://github.com/mysql-net/MySqlConnector/issues/474
using
(
var
connection
=
new
MySqlConnection
(
Startup
.
ConnectionString
))
{
using
(
var
transaction
=
connection
.
BeginAndJoinToTransaction
(
_capBus
,
autoCommit
:
false
))
{
//your business code
connection
.
Execute
(
"insert into test(name) values('test')"
,
transaction
);
for
(
int
i
=
0
;
i
<
5
;
i
++)
{
_capBus
.
Publish
(
"sample.rabbitmq.mysql"
,
DateTime
.
Now
);
}
transaction
.
Commit
();
}
}
return
Ok
(
"publish successful!"
);
return
Ok
();
}
[
CapSubscribe
(
"#.test2"
)]
public
void
Test2
(
int
value
)
[
NonAction
]
[
CapSubscribe
(
"sample.rabbitmq.mysql"
)]
public
void
Subscriber
(
DateTime
time
)
{
Console
.
WriteLine
(
"Subscriber output message: "
+
value
);
Console
.
WriteLine
(
$@"
{
DateTime
.
Now
}
, Subscriber invoked, Sent time:
{
time
}
"
);
}
}
}
\ No newline at end of file
samples/Sample.Kafka.MySql/Startup.cs
View file @
406d338a
using
System
;
using
Microsoft.AspNetCore.Builder
;
using
Microsoft.AspNetCore.Builder
;
using
Microsoft.Extensions.DependencyInjection
;
namespace
Sample.Kafka.MySql
{
public
class
Startup
{
public
const
string
ConnectionString
=
"Server=localhost;Database=testcap;UserId=root;Password=123123;"
;
public
void
ConfigureServices
(
IServiceCollection
services
)
{
services
.
AddCap
(
x
=>
{
x
.
UseMySql
(
"Server=localhost;Database=testcap;UserId=root;Password=123123;"
);
x
.
UseMySql
(
ConnectionString
);
x
.
UseKafka
(
"localhost:9092"
);
x
.
UseDashboard
();
});
...
...
samples/Sample.RabbitMQ.MongoDB/Controllers/ValuesController.cs
View file @
406d338a
...
...
@@ -11,60 +11,66 @@ namespace Sample.RabbitMQ.MongoDB.Controllers
public
class
ValuesController
:
ControllerBase
{
private
readonly
IMongoClient
_client
;
private
readonly
ICapPublisher
_cap
Publisher
;
private
readonly
ICapPublisher
_cap
Bus
;
public
ValuesController
(
IMongoClient
client
,
ICapPublisher
cap
Publisher
)
public
ValuesController
(
IMongoClient
client
,
ICapPublisher
cap
Bus
)
{
_client
=
client
;
_cap
Publisher
=
capPublisher
;
_cap
Bus
=
capBus
;
}
[
Route
(
"~/
publish
"
)]
public
IActionResult
PublishWithTrans
()
[
Route
(
"~/
without/transaction
"
)]
public
IActionResult
WithoutTransaction
()
{
_capBus
.
Publish
(
"sample.rabbitmq.mongodb"
,
DateTime
.
Now
);
return
Ok
();
}
[
Route
(
"~/transaction/not/autocommit"
)]
public
IActionResult
PublishNotAutoCommit
()
{
//NOTE: before your test, your need to create database and collection at first
//注意:MongoDB 不能在事务中创建数据库和集合,所以你需要单独创建它们,模拟一条记录插入则会自动创建
//var mycollection = _client.GetDatabase("test").GetCollection<BsonDocument>("test.collection");
//mycollection.InsertOne(new BsonDocument { { "test", "test" } });
using
(
var
session
=
_client
.
StartSession
())
using
(
var
trans
=
_capPublisher
.
Transaction
.
Begin
(
session
))
using
(
var
session
=
_client
.
StartAndJoinToTransaction
(
_capBus
,
autoCommit
:
false
))
{
var
collection
=
_client
.
GetDatabase
(
"test"
).
GetCollection
<
BsonDocument
>(
"test.collection"
);
collection
.
InsertOne
(
session
,
new
BsonDocument
{
{
"hello"
,
"world"
}
});
_cap
Publisher
.
Publish
(
"sample.rabbitmq.mongodb"
,
DateTime
.
Now
);
_cap
Bus
.
Publish
(
"sample.rabbitmq.mongodb"
,
DateTime
.
Now
);
trans
.
Commit
();
session
.
CommitTransaction
();
}
return
Ok
();
}
[
Route
(
"~/
publish
/autocommit"
)]
public
IActionResult
Publish
NotAutoCommit
()
[
Route
(
"~/
transaction
/autocommit"
)]
public
IActionResult
Publish
WithoutTrans
()
{
using
(
var
session
=
_client
.
StartSession
())
using
(
_capPublisher
.
Transaction
.
Begin
(
session
,
true
))
//NOTE: before your test, your need to create database and collection at first
//注意:MongoDB 不能在事务中创建数据库和集合,所以你需要单独创建它们,模拟一条记录插入则会自动创建
//var mycollection = _client.GetDatabase("test").GetCollection<BsonDocument>("test.collection");
//mycollection.InsertOne(new BsonDocument { { "test", "test" } });
using
(
var
session
=
_client
.
StartAndJoinToTransaction
(
_capBus
,
autoCommit
:
true
))
{
var
collection
=
_client
.
GetDatabase
(
"test"
).
GetCollection
<
BsonDocument
>(
"test.collection"
);
collection
.
InsertOne
(
session
,
new
BsonDocument
{
{
"hello
2"
,
"world2
"
}
});
collection
.
InsertOne
(
session
,
new
BsonDocument
{
{
"hello
"
,
"world
"
}
});
_cap
Publisher
.
Publish
(
"sample.rabbitmq.mongodb"
,
DateTime
.
Now
);
_cap
Bus
.
Publish
(
"sample.rabbitmq.mongodb"
,
DateTime
.
Now
);
}
return
Ok
();
}
[
Route
(
"~/publish/without/trans"
)]
public
IActionResult
PublishWithoutTrans
()
{
_capPublisher
.
Publish
(
"sample.rabbitmq.mongodb"
,
DateTime
.
Now
);
return
Ok
();
}
[
NonAction
]
[
CapSubscribe
(
"sample.rabbitmq.mongodb"
)]
public
void
ReceiveMessage
(
DateTime
time
)
{
Console
.
WriteLine
(
"[sample.rabbitmq.mongodb] message received: "
+
DateTime
.
Now
+
",sent time: "
+
time
);
Console
.
WriteLine
(
$@"
{
DateTime
.
Now
}
, Subscriber invoked, Sent time:
{
time
}
"
);
}
}
}
samples/Sample.RabbitMQ.MySql/Controllers/ValuesController.cs
View file @
406d338a
using
System
;
using
System.Threading.Tasks
;
using
Dapper
;
using
DotNetCore.CAP
;
using
Microsoft.AspNetCore.Mvc
;
...
...
@@ -49,7 +48,7 @@ namespace Sample.RabbitMQ.MySql.Controllers
}
[
Route
(
"~/ef/transaction"
)]
public
async
Task
<
IActionResult
>
EntityFrameworkWithTransaction
([
FromServices
]
AppDbContext
dbContext
)
public
IActionResult
EntityFrameworkWithTransaction
([
FromServices
]
AppDbContext
dbContext
)
{
using
(
var
trans
=
dbContext
.
Database
.
BeginAndJoinToTransaction
(
_capBus
,
autoCommit
:
false
))
{
...
...
@@ -57,7 +56,7 @@ namespace Sample.RabbitMQ.MySql.Controllers
for
(
int
i
=
0
;
i
<
5
;
i
++)
{
await
_capBus
.
PublishAsync
(
"sample.rabbitmq.mysql"
,
DateTime
.
Now
);
_capBus
.
Publish
(
"sample.rabbitmq.mysql"
,
DateTime
.
Now
);
}
dbContext
.
SaveChanges
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment