Skip to content

Commit 93c7bf8

Browse files
add stream-based rabbit mq bus
1 parent 0a45d87 commit 93c7bf8

File tree

7 files changed

+444
-25
lines changed

7 files changed

+444
-25
lines changed

EasyCaching.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Bus.Zookeeper",
7676
EndProject
7777
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.FasterKv", "src\EasyCaching.FasterKv\EasyCaching.FasterKv.csproj", "{7191E567-38DF-4879-82E1-73EC618AFCAC}"
7878
EndProject
79+
EndProject
80+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Bus.RabbitMQStream", "bus\EasyCaching.Bus.RabbitMQStream\EasyCaching.Bus.RabbitMQStream.csproj", "{3C9D5E40-B3A5-4649-8B40-08094644B0FB}"
7981
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Serialization.MemoryPack", "serialization\EasyCaching.Serialization.MemoryPack\EasyCaching.Serialization.MemoryPack.csproj", "{EEF22C21-F380-4980-B72C-F14488369333}"
8082
EndProject
8183
Global
@@ -208,6 +210,10 @@ Global
208210
{EEF22C21-F380-4980-B72C-F14488369333}.Debug|Any CPU.Build.0 = Debug|Any CPU
209211
{EEF22C21-F380-4980-B72C-F14488369333}.Release|Any CPU.ActiveCfg = Release|Any CPU
210212
{EEF22C21-F380-4980-B72C-F14488369333}.Release|Any CPU.Build.0 = Release|Any CPU
213+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
214+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
215+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
216+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Release|Any CPU.Build.0 = Release|Any CPU
211217
EndGlobalSection
212218
GlobalSection(SolutionProperties) = preSolution
213219
HideSolutionNode = FALSE
@@ -244,6 +250,7 @@ Global
244250
{5E488583-391E-4E15-83C1-7301B4FE79AE} = {B337509B-75F9-4851-821F-9BBE87C4E4BC}
245251
{7191E567-38DF-4879-82E1-73EC618AFCAC} = {A0F5CC7E-155F-4726-8DEB-E966950B3FE9}
246252
{EEF22C21-F380-4980-B72C-F14488369333} = {15070C49-A507-4844-BCFE-D319CFBC9A63}
253+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB} = {B337509B-75F9-4851-821F-9BBE87C4E4BC}
247254
EndGlobalSection
248255
GlobalSection(ExtensibilityGlobals) = postSolution
249256
SolutionGuid = {63A57886-054B-476C-AAE1-8D7C8917682E}

build/version.props

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
<Project>
22
<PropertyGroup>
3-
<EasyCachingCorePackageVersion>1.9.0</EasyCachingCorePackageVersion>
4-
<EasyCachingMemcachedPackageVersion>1.9.0</EasyCachingMemcachedPackageVersion>
5-
<EasyCachingRedisPackageVersion>1.9.0</EasyCachingRedisPackageVersion>
6-
<EasyCachingSQLitePackageVersion>1.9.0</EasyCachingSQLitePackageVersion>
7-
<EasyCachingInMemoryPackageVersion>1.9.0</EasyCachingInMemoryPackageVersion>
8-
<EasyCachingHybridPackageVersion>1.9.0</EasyCachingHybridPackageVersion>
9-
<EasyCachingAspectCorePackageVersion>1.9.0</EasyCachingAspectCorePackageVersion>
10-
<EasyCachingCastlePackageVersion>1.9.0</EasyCachingCastlePackageVersion>
11-
<EasyCachingResponseCachingPackageVersion>1.9.0</EasyCachingResponseCachingPackageVersion>
12-
<EasyCachingJsonPackageVersion>1.9.0</EasyCachingJsonPackageVersion>
13-
<EasyCachingMessagePackPackageVersion>1.9.0</EasyCachingMessagePackPackageVersion>
14-
<EasyCachingProtobufPackageVersion>1.9.0</EasyCachingProtobufPackageVersion>
15-
<EasyCachingCSRedisPackageVersion>1.9.0</EasyCachingCSRedisPackageVersion>
16-
<EasyCachingRedisBusPackageVersion>1.9.1</EasyCachingRedisBusPackageVersion>
17-
<EasyCachingCSRedisBusPackageVersion>1.9.0</EasyCachingCSRedisBusPackageVersion>
18-
<EasyCachingRabbitBusPackageVersion>1.9.0</EasyCachingRabbitBusPackageVersion>
19-
<EasyCachingKafkaBusPackageVersion>1.9.0</EasyCachingKafkaBusPackageVersion>
20-
<EasyCachingZookeeperBusPackageVersion>1.9.0</EasyCachingZookeeperBusPackageVersion>
21-
<EasyCachingDiskPackageVersion>1.9.0</EasyCachingDiskPackageVersion>
22-
<EasyCachingMsExtPackageVersion>1.9.0</EasyCachingMsExtPackageVersion>
23-
<EasyCachingLiteDBPackageVersion>1.9.0</EasyCachingLiteDBPackageVersion>
24-
<EasyCachingSTJsonPackageVersion>1.9.0</EasyCachingSTJsonPackageVersion>
25-
<EasyCachingMemoryPackageVersion>1.9.0</EasyCachingMemoryPackageVersion>
26-
<EasyCachingFaskKVPackageVersion>1.9.0</EasyCachingFaskKVPackageVersion>
3+
<EasyCachingCorePackageVersion>1.9.9</EasyCachingCorePackageVersion>
4+
<EasyCachingMemcachedPackageVersion>1.9.9</EasyCachingMemcachedPackageVersion>
5+
<EasyCachingRedisPackageVersion>1.9.9</EasyCachingRedisPackageVersion>
6+
<EasyCachingSQLitePackageVersion>1.9.9</EasyCachingSQLitePackageVersion>
7+
<EasyCachingInMemoryPackageVersion>1.9.9</EasyCachingInMemoryPackageVersion>
8+
<EasyCachingHybridPackageVersion>1.9.9</EasyCachingHybridPackageVersion>
9+
<EasyCachingAspectCorePackageVersion>1.9.9</EasyCachingAspectCorePackageVersion>
10+
<EasyCachingCastlePackageVersion>1.9.9</EasyCachingCastlePackageVersion>
11+
<EasyCachingResponseCachingPackageVersion>1.9.9</EasyCachingResponseCachingPackageVersion>
12+
<EasyCachingJsonPackageVersion>1.9.9</EasyCachingJsonPackageVersion>
13+
<EasyCachingMessagePackPackageVersion>1.9.9</EasyCachingMessagePackPackageVersion>
14+
<EasyCachingProtobufPackageVersion>1.9.9</EasyCachingProtobufPackageVersion>
15+
<EasyCachingCSRedisPackageVersion>1.9.9</EasyCachingCSRedisPackageVersion>
16+
<EasyCachingRedisBusPackageVersion>1.9.9</EasyCachingRedisBusPackageVersion>
17+
<EasyCachingCSRedisBusPackageVersion>1.9.9</EasyCachingCSRedisBusPackageVersion>
18+
<EasyCachingRabbitBusPackageVersion>1.9.9</EasyCachingRabbitBusPackageVersion>
19+
<EasyCachingRabbitStreamBusPackageVersion>1.9.9</EasyCachingRabbitStreamBusPackageVersion>
20+
<EasyCachingKafkaBusPackageVersion>1.9.9</EasyCachingKafkaBusPackageVersion>
21+
<EasyCachingZookeeperBusPackageVersion>1.9.9</EasyCachingZookeeperBusPackageVersion>
22+
<EasyCachingDiskPackageVersion>1.9.9</EasyCachingDiskPackageVersion>
23+
<EasyCachingMsExtPackageVersion>1.9.9</EasyCachingMsExtPackageVersion>
24+
<EasyCachingLiteDBPackageVersion>1.9.9</EasyCachingLiteDBPackageVersion>
25+
<EasyCachingSTJsonPackageVersion>1.9.9</EasyCachingSTJsonPackageVersion>
26+
<EasyCachingMemoryPackageVersion>1.9.9</EasyCachingMemoryPackageVersion>
27+
<EasyCachingFaskKVPackageVersion>1.9.9</EasyCachingFaskKVPackageVersion>
2728
</PropertyGroup>
2829
</Project>

bus/EasyCaching.Bus.RabbitMQ/Configurations/RabbitMQBusOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/// RabbitMQ Bus options.
77
/// </summary>
88
public class RabbitMQBusOptions : BaseRabbitMQOptions
9-
{
9+
{
1010
/// <summary>
1111
/// Gets or sets the name of the queue.
1212
/// </summary>
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
namespace Microsoft.Extensions.DependencyInjection
2+
{
3+
using System;
4+
using EasyCaching.Bus.RabbitMQ;
5+
using EasyCaching.Bus.RabbitMQStream;
6+
using EasyCaching.Core;
7+
using EasyCaching.Core.Configurations;
8+
using Microsoft.Extensions.Configuration;
9+
10+
/// <summary>
11+
/// EasyCaching options extensions.
12+
/// </summary>
13+
public static class EasyCachingOptionsExtensions
14+
{
15+
/// <summary>
16+
/// Withs the RabbitMQStream bus (specify the config via hard code).
17+
/// </summary>
18+
/// <param name="options">Options.</param>
19+
/// <param name="configure">Configure bus settings.</param>
20+
21+
public static EasyCachingOptions WithRabbitMQStreamBus(
22+
this EasyCachingOptions options
23+
, Action<RabbitMQBusOptions> configure
24+
)
25+
{
26+
ArgumentCheck.NotNull(configure, nameof(configure));
27+
28+
options.RegisterExtension(new RabbitMQStreamBusOptionsExtension(configure));
29+
return options;
30+
}
31+
32+
/// <summary>
33+
/// Withs the RabbitMQStream bus (read config from configuration file).
34+
/// </summary>
35+
/// <param name="options">Options.</param>
36+
/// <param name="configuration">The configuration.</param>
37+
/// <param name="sectionName">The section name in the configuration file.</param>
38+
public static EasyCachingOptions WithRabbitMQStreamBus(
39+
this EasyCachingOptions options
40+
, IConfiguration configuration
41+
, string sectionName = EasyCachingConstValue.RabbitMQBusSection
42+
)
43+
{
44+
var dbConfig = configuration.GetSection(sectionName);
45+
var busOptions = new RabbitMQBusOptions();
46+
dbConfig.Bind(busOptions);
47+
48+
void configure(RabbitMQBusOptions x)
49+
{
50+
x.HostName = busOptions.HostName;
51+
x.Password = busOptions.Password;
52+
x.Port = busOptions.Port;
53+
x.QueueMessageExpires = busOptions.QueueMessageExpires;
54+
x.RequestedConnectionTimeout = busOptions.RequestedConnectionTimeout;
55+
//x.RouteKey = busOptions.RouteKey;
56+
x.SocketReadTimeout = busOptions.SocketReadTimeout;
57+
x.SocketWriteTimeout = busOptions.SocketWriteTimeout;
58+
x.TopicExchangeName = busOptions.TopicExchangeName;
59+
x.UserName = busOptions.UserName;
60+
x.VirtualHost = busOptions.VirtualHost;
61+
x.QueueName = busOptions.QueueName;
62+
}
63+
64+
options.RegisterExtension(new RabbitMQStreamBusOptionsExtension(configure));
65+
return options;
66+
}
67+
}
68+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
namespace EasyCaching.Bus.RabbitMQStream
2+
{
3+
using System;
4+
using EasyCaching.Bus.RabbitMQ;
5+
using EasyCaching.Core.Bus;
6+
using EasyCaching.Core.Configurations;
7+
using global::RabbitMQ.Client;
8+
using Microsoft.Extensions.DependencyInjection;
9+
using Microsoft.Extensions.ObjectPool;
10+
11+
/// <summary>
12+
/// RabbitMQ Bus options extension.
13+
/// </summary>
14+
public class RabbitMQStreamBusOptionsExtension : IEasyCachingOptionsExtension
15+
{
16+
/// <summary>
17+
/// The configure.
18+
/// </summary>
19+
private readonly Action<RabbitMQBusOptions> configure;
20+
21+
/// <summary>
22+
/// Initializes a new instance of the <see cref="T:EasyCaching.Bus.RabbitMQ.RabbitMQBusOptionsExtension"/> class.
23+
/// </summary>
24+
/// <param name="configure">Configure.</param>
25+
public RabbitMQStreamBusOptionsExtension(Action<RabbitMQBusOptions> configure)
26+
{
27+
this.configure = configure;
28+
}
29+
30+
/// <summary>
31+
/// Adds the services.
32+
/// </summary>
33+
/// <param name="services">Services.</param>
34+
public void AddServices(IServiceCollection services)
35+
{
36+
services.AddOptions();
37+
services.Configure(configure);
38+
39+
services.AddSingleton<IPooledObjectPolicy<IModel>, ModelPooledObjectPolicy>();
40+
services.AddSingleton<IEasyCachingBus, DefaultRabbitMQStreamBus>();
41+
}
42+
}
43+
}

0 commit comments

Comments
 (0)