Skip to content

Commit a39a5bf

Browse files
authored
Merge pull request #490 from sarmis/rmq-stream-merge-branch
add stream-based rabbit mq bus
2 parents 930d9f0 + f26e1a0 commit a39a5bf

File tree

7 files changed

+421
-2
lines changed

7 files changed

+421
-2
lines changed

EasyCaching.sln

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EasyCaching.Bus.Zookeeper",
7777
EndProject
7878
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EasyCaching.FasterKv", "src\EasyCaching.FasterKv\EasyCaching.FasterKv.csproj", "{7191E567-38DF-4879-82E1-73EC618AFCAC}"
7979
EndProject
80-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EasyCaching.Serialization.MemoryPack", "serialization\EasyCaching.Serialization.MemoryPack\EasyCaching.Serialization.MemoryPack.csproj", "{EEF22C21-F380-4980-B72C-F14488369333}"
80+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Bus.RabbitMQStream", "bus\EasyCaching.Bus.RabbitMQStream\EasyCaching.Bus.RabbitMQStream.csproj", "{3C9D5E40-B3A5-4649-8B40-08094644B0FB}"
81+
EndProject
82+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Serialization.MemoryPack", "serialization\EasyCaching.Serialization.MemoryPack\EasyCaching.Serialization.MemoryPack.csproj", "{EEF22C21-F380-4980-B72C-F14488369333}"
8183
EndProject
8284
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Demo.Locks", "sample\EasyCaching.Demo.Locks\EasyCaching.Demo.Locks.csproj", "{9B15A0A0-BD6B-40B0-90D4-848BC3E4AF98}"
8385
EndProject
@@ -211,6 +213,10 @@ Global
211213
{EEF22C21-F380-4980-B72C-F14488369333}.Debug|Any CPU.Build.0 = Debug|Any CPU
212214
{EEF22C21-F380-4980-B72C-F14488369333}.Release|Any CPU.ActiveCfg = Release|Any CPU
213215
{EEF22C21-F380-4980-B72C-F14488369333}.Release|Any CPU.Build.0 = Release|Any CPU
216+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
217+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
218+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
219+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Release|Any CPU.Build.0 = Release|Any CPU
214220
{9B15A0A0-BD6B-40B0-90D4-848BC3E4AF98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
215221
{9B15A0A0-BD6B-40B0-90D4-848BC3E4AF98}.Debug|Any CPU.Build.0 = Debug|Any CPU
216222
{9B15A0A0-BD6B-40B0-90D4-848BC3E4AF98}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -251,6 +257,7 @@ Global
251257
{5E488583-391E-4E15-83C1-7301B4FE79AE} = {B337509B-75F9-4851-821F-9BBE87C4E4BC}
252258
{7191E567-38DF-4879-82E1-73EC618AFCAC} = {A0F5CC7E-155F-4726-8DEB-E966950B3FE9}
253259
{EEF22C21-F380-4980-B72C-F14488369333} = {15070C49-A507-4844-BCFE-D319CFBC9A63}
260+
{3C9D5E40-B3A5-4649-8B40-08094644B0FB} = {B337509B-75F9-4851-821F-9BBE87C4E4BC}
254261
{9B15A0A0-BD6B-40B0-90D4-848BC3E4AF98} = {F88D727A-9F9C-43D9-90B1-D4A02BF8BC98}
255262
EndGlobalSection
256263
GlobalSection(ExtensibilityGlobals) = postSolution

build/version.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<EasyCachingRedisBusPackageVersion>1.9.1</EasyCachingRedisBusPackageVersion>
1717
<EasyCachingCSRedisBusPackageVersion>1.9.1</EasyCachingCSRedisBusPackageVersion>
1818
<EasyCachingRabbitBusPackageVersion>1.9.1</EasyCachingRabbitBusPackageVersion>
19+
<EasyCachingRabbitStreamBusPackageVersion>1.9.1</EasyCachingRabbitStreamBusPackageVersion>
1920
<EasyCachingKafkaBusPackageVersion>1.9.1</EasyCachingKafkaBusPackageVersion>
2021
<EasyCachingZookeeperBusPackageVersion>1.9.1</EasyCachingZookeeperBusPackageVersion>
2122
<EasyCachingDiskPackageVersion>1.9.1</EasyCachingDiskPackageVersion>

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)