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
205e3b3e
Commit
205e3b3e
authored
Aug 18, 2018
by
Savorboard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor mongodb module for new transaction mode
parent
c69d1f6f
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
27 additions
and
70 deletions
+27
-70
ValuesController.cs
...s/Sample.RabbitMQ.MongoDB/Controllers/ValuesController.cs
+8
-5
Startup.cs
samples/Sample.RabbitMQ.MongoDB/Startup.cs
+5
-18
MongoDBMonitoringApiTest.cs
test/DotNetCore.CAP.MongoDB.Test/MongoDBMonitoringApiTest.cs
+2
-3
MongoDBStorageConnectionTest.cs
...tNetCore.CAP.MongoDB.Test/MongoDBStorageConnectionTest.cs
+12
-6
MongoDBStorageTest.cs
test/DotNetCore.CAP.MongoDB.Test/MongoDBStorageTest.cs
+0
-8
MongoDBUtilTest.cs
test/DotNetCore.CAP.MongoDB.Test/MongoDBUtilTest.cs
+0
-30
No files found.
samples/Sample.RabbitMQ.MongoDB/Controllers/ValuesController.cs
View file @
205e3b3e
...
...
@@ -22,10 +22,13 @@ namespace Sample.RabbitMQ.MongoDB.Controllers
[
Route
(
"~/publish"
)]
public
IActionResult
PublishWithTrans
()
{
//var mycollection = _client.GetDatabase("test").GetCollection<BsonDocument>("test.collection");
//mycollection.InsertOne(new BsonDocument { { "test", "test" } });
using
(
var
session
=
_client
.
StartSession
())
using
(
var
trans
=
_capPublisher
.
CapTransaction
.
Begin
(
session
))
{
var
collection
=
_client
.
GetDatabase
(
"
TEST"
).
GetCollection
<
BsonDocument
>(
"test
"
);
var
collection
=
_client
.
GetDatabase
(
"
test"
).
GetCollection
<
BsonDocument
>(
"test.collection
"
);
collection
.
InsertOne
(
session
,
new
BsonDocument
{
{
"hello"
,
"world"
}
});
_capPublisher
.
Publish
(
"sample.rabbitmq.mongodb"
,
DateTime
.
Now
);
...
...
@@ -39,17 +42,17 @@ namespace Sample.RabbitMQ.MongoDB.Controllers
public
IActionResult
PublishNotAutoCommit
()
{
using
(
var
session
=
_client
.
StartSession
())
using
(
_capPublisher
.
CapTransaction
.
Begin
(
session
,
true
))
using
(
_capPublisher
.
CapTransaction
.
Begin
(
session
,
true
))
{
var
collection
=
_client
.
GetDatabase
(
"
TEST"
).
GetCollection
<
BsonDocument
>(
"test
"
);
collection
.
InsertOne
(
session
,
new
BsonDocument
{
{
"hello
"
,
"world
"
}
});
var
collection
=
_client
.
GetDatabase
(
"
test"
).
GetCollection
<
BsonDocument
>(
"test.collection
"
);
collection
.
InsertOne
(
session
,
new
BsonDocument
{
{
"hello
2"
,
"world2
"
}
});
_capPublisher
.
Publish
(
"sample.rabbitmq.mongodb"
,
DateTime
.
Now
);
}
return
Ok
();
}
[
Route
(
"~/publish/without/trans"
)]
public
IActionResult
PublishWithoutTrans
()
{
...
...
samples/Sample.RabbitMQ.MongoDB/Startup.cs
View file @
205e3b3e
using
DotNetCore.CAP
;
using
Microsoft.AspNetCore.Builder
;
using
Microsoft.AspNetCore.Builder
;
using
Microsoft.AspNetCore.Hosting
;
using
Microsoft.AspNetCore.Mvc
;
using
Microsoft.Extensions.Configuration
;
...
...
@@ -19,21 +18,11 @@ namespace Sample.RabbitMQ.MongoDB
public
void
ConfigureServices
(
IServiceCollection
services
)
{
services
.
AddSingleton
<
IMongoClient
>(
new
MongoClient
(
Configuration
.
GetConnectionString
(
"MongoDB"
)
));
services
.
AddSingleton
<
IMongoClient
>(
new
MongoClient
(
"mongodb://192.168.10.110:27017,192.168.10.110:27018,192.168.10.110:27019/?replicaSet=rs0"
));
services
.
AddCap
(
x
=>
{
x
.
UseMongoDB
();
var
mq
=
new
RabbitMQOptions
();
Configuration
.
GetSection
(
"RabbitMQ"
).
Bind
(
mq
);
x
.
UseRabbitMQ
(
cfg
=>
{
cfg
.
HostName
=
mq
.
HostName
;
cfg
.
Port
=
mq
.
Port
;
cfg
.
UserName
=
mq
.
UserName
;
cfg
.
Password
=
mq
.
Password
;
});
x
.
UseMongoDB
(
"mongodb://192.168.10.110:27017,192.168.10.110:27018,192.168.10.110:27019/?replicaSet=rs0"
);
x
.
UseRabbitMQ
(
"localhost"
);
x
.
UseDashboard
();
});
services
.
AddMvc
().
SetCompatibilityVersion
(
CompatibilityVersion
.
Version_2_1
);
...
...
@@ -46,9 +35,7 @@ namespace Sample.RabbitMQ.MongoDB
app
.
UseDeveloperExceptionPage
();
}
app
.
UseMvc
();
app
.
UseCap
();
app
.
UseMvc
();
}
}
}
test/DotNetCore.CAP.MongoDB.Test/MongoDBMonitoringApiTest.cs
View file @
205e3b3e
...
...
@@ -17,20 +17,19 @@ namespace DotNetCore.CAP.MongoDB.Test
{
_api
=
new
MongoDBMonitoringApi
(
MongoClient
,
MongoDBOptions
);
var
helper
=
new
MongoDBUtil
();
var
collection
=
Database
.
GetCollection
<
CapPublishedMessage
>(
MongoDBOptions
.
PublishedCollection
);
collection
.
InsertMany
(
new
[]
{
new
CapPublishedMessage
{
Id
=
helper
.
GetNextSequenceValue
(
Database
,
MongoDBOptions
.
PublishedCollection
),
Id
=
SnowflakeId
.
Default
().
NextId
(
),
Added
=
DateTime
.
Now
.
AddHours
(-
1
),
StatusName
=
"Failed"
,
Content
=
"abc"
},
new
CapPublishedMessage
{
Id
=
helper
.
GetNextSequenceValue
(
Database
,
MongoDBOptions
.
PublishedCollection
),
Id
=
SnowflakeId
.
Default
().
NextId
(
),
Added
=
DateTime
.
Now
,
StatusName
=
"Failed"
,
Content
=
"bbc"
...
...
test/DotNetCore.CAP.MongoDB.Test/MongoDBStorageConnectionTest.cs
View file @
205e3b3e
...
...
@@ -11,20 +11,23 @@ namespace DotNetCore.CAP.MongoDB.Test
[
Collection
(
"MongoDB"
)]
public
class
MongoDBStorageConnectionTest
:
DatabaseTestHost
{
private
IStorageConnection
_connection
=>
private
IStorageConnection
_connection
=>
Provider
.
GetService
<
MongoDBStorage
>().
GetConnection
();
[
Fact
]
public
async
void
StoreReceivedMessageAsync_TestAsync
()
public
void
StoreReceivedMessageAsync_TestAsync
()
{
var
id
=
await
_connection
.
StoreReceivedMessageAsync
(
new
CapReceivedMessage
(
new
MessageContext
var
messageContext
=
new
MessageContext
{
Group
=
"test"
,
Name
=
"test"
,
Content
=
"test-content"
}
))
;
};
id
.
Should
().
BeGreaterThan
(
0
);
_connection
.
StoreReceivedMessage
(
new
CapReceivedMessage
(
messageContext
)
{
Id
=
SnowflakeId
.
Default
().
NextId
()
});
}
[
Fact
]
...
...
@@ -45,14 +48,17 @@ namespace DotNetCore.CAP.MongoDB.Test
msgs
.
Should
().
BeEmpty
();
var
id
=
SnowflakeId
.
Default
().
NextId
();
var
msg
=
new
CapReceivedMessage
{
Id
=
id
,
Group
=
"test"
,
Name
=
"test"
,
Content
=
"test-content"
,
StatusName
=
StatusName
.
Failed
};
var
id
=
await
_connection
.
StoreReceivedMessageAsync
(
msg
);
_connection
.
StoreReceivedMessage
(
msg
);
var
collection
=
Database
.
GetCollection
<
CapReceivedMessage
>(
MongoDBOptions
.
ReceivedCollection
);
...
...
test/DotNetCore.CAP.MongoDB.Test/MongoDBStorageTest.cs
View file @
205e3b3e
using
FluentAssertions
;
using
Microsoft.Extensions.DependencyInjection
;
using
MongoDB.Bson
;
using
MongoDB.Driver
;
using
Xunit
;
...
...
@@ -12,18 +10,12 @@ namespace DotNetCore.CAP.MongoDB.Test
[
Fact
]
public
void
InitializeAsync_Test
()
{
var
storage
=
Provider
.
GetService
<
MongoDBStorage
>();
var
names
=
MongoClient
.
ListDatabaseNames
()?.
ToList
();
names
.
Should
().
Contain
(
MongoDBOptions
.
DatabaseName
);
var
collections
=
Database
.
ListCollectionNames
()?.
ToList
();
collections
.
Should
().
Contain
(
MongoDBOptions
.
PublishedCollection
);
collections
.
Should
().
Contain
(
MongoDBOptions
.
ReceivedCollection
);
collections
.
Should
().
Contain
(
MongoDBOptions
.
CounterCollection
);
var
collection
=
Database
.
GetCollection
<
BsonDocument
>(
MongoDBOptions
.
CounterCollection
);
collection
.
CountDocuments
(
new
BsonDocument
{
{
"_id"
,
MongoDBOptions
.
PublishedCollection
}
}).
Should
().
Be
(
1
);
collection
.
CountDocuments
(
new
BsonDocument
{
{
"_id"
,
MongoDBOptions
.
ReceivedCollection
}
}).
Should
().
Be
(
1
);
}
}
}
\ No newline at end of file
test/DotNetCore.CAP.MongoDB.Test/MongoDBUtilTest.cs
deleted
100644 → 0
View file @
c69d1f6f
using
System.Collections.Concurrent
;
using
System.Threading.Tasks
;
using
FluentAssertions
;
using
Xunit
;
namespace
DotNetCore.CAP.MongoDB.Test
{
[
Collection
(
"MongoDB"
)]
public
class
MongoDBUtilTest
:
DatabaseTestHost
{
[
Fact
]
public
async
void
GetNextSequenceValueAsync_Test
()
{
var
id
=
await
new
MongoDBUtil
().
GetNextSequenceValueAsync
(
Database
,
MongoDBOptions
.
ReceivedCollection
);
id
.
Should
().
BeGreaterThan
(
0
);
}
[
Fact
]
public
void
GetNextSequenceValue_Concurrency_Test
()
{
var
dic
=
new
ConcurrentDictionary
<
int
,
int
>();
Parallel
.
For
(
0
,
30
,
(
x
)
=>
{
var
id
=
new
MongoDBUtil
().
GetNextSequenceValue
(
Database
,
MongoDBOptions
.
ReceivedCollection
);
id
.
Should
().
BeGreaterThan
(
0
);
dic
.
TryAdd
(
id
,
x
).
Should
().
BeTrue
();
//The id shouldn't be same.
});
}
}
}
\ No newline at end of file
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