Skip to content

Commit

Permalink
add stream-based rabbit mq bus
Browse files Browse the repository at this point in the history
  • Loading branch information
sarmis committed Sep 17, 2023
1 parent 0a45d87 commit 93c7bf8
Show file tree
Hide file tree
Showing 7 changed files with 444 additions and 25 deletions.
7 changes: 7 additions & 0 deletions EasyCaching.sln
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Bus.Zookeeper",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.FasterKv", "src\EasyCaching.FasterKv\EasyCaching.FasterKv.csproj", "{7191E567-38DF-4879-82E1-73EC618AFCAC}"
EndProject
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Bus.RabbitMQStream", "bus\EasyCaching.Bus.RabbitMQStream\EasyCaching.Bus.RabbitMQStream.csproj", "{3C9D5E40-B3A5-4649-8B40-08094644B0FB}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Serialization.MemoryPack", "serialization\EasyCaching.Serialization.MemoryPack\EasyCaching.Serialization.MemoryPack.csproj", "{EEF22C21-F380-4980-B72C-F14488369333}"
EndProject
Global
Expand Down Expand Up @@ -208,6 +210,10 @@ Global
{EEF22C21-F380-4980-B72C-F14488369333}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EEF22C21-F380-4980-B72C-F14488369333}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EEF22C21-F380-4980-B72C-F14488369333}.Release|Any CPU.Build.0 = Release|Any CPU
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3C9D5E40-B3A5-4649-8B40-08094644B0FB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -244,6 +250,7 @@ Global
{5E488583-391E-4E15-83C1-7301B4FE79AE} = {B337509B-75F9-4851-821F-9BBE87C4E4BC}
{7191E567-38DF-4879-82E1-73EC618AFCAC} = {A0F5CC7E-155F-4726-8DEB-E966950B3FE9}
{EEF22C21-F380-4980-B72C-F14488369333} = {15070C49-A507-4844-BCFE-D319CFBC9A63}
{3C9D5E40-B3A5-4649-8B40-08094644B0FB} = {B337509B-75F9-4851-821F-9BBE87C4E4BC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {63A57886-054B-476C-AAE1-8D7C8917682E}
Expand Down
49 changes: 25 additions & 24 deletions build/version.props
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
<Project>
<PropertyGroup>
<EasyCachingCorePackageVersion>1.9.0</EasyCachingCorePackageVersion>
<EasyCachingMemcachedPackageVersion>1.9.0</EasyCachingMemcachedPackageVersion>
<EasyCachingRedisPackageVersion>1.9.0</EasyCachingRedisPackageVersion>
<EasyCachingSQLitePackageVersion>1.9.0</EasyCachingSQLitePackageVersion>
<EasyCachingInMemoryPackageVersion>1.9.0</EasyCachingInMemoryPackageVersion>
<EasyCachingHybridPackageVersion>1.9.0</EasyCachingHybridPackageVersion>
<EasyCachingAspectCorePackageVersion>1.9.0</EasyCachingAspectCorePackageVersion>
<EasyCachingCastlePackageVersion>1.9.0</EasyCachingCastlePackageVersion>
<EasyCachingResponseCachingPackageVersion>1.9.0</EasyCachingResponseCachingPackageVersion>
<EasyCachingJsonPackageVersion>1.9.0</EasyCachingJsonPackageVersion>
<EasyCachingMessagePackPackageVersion>1.9.0</EasyCachingMessagePackPackageVersion>
<EasyCachingProtobufPackageVersion>1.9.0</EasyCachingProtobufPackageVersion>
<EasyCachingCSRedisPackageVersion>1.9.0</EasyCachingCSRedisPackageVersion>
<EasyCachingRedisBusPackageVersion>1.9.1</EasyCachingRedisBusPackageVersion>
<EasyCachingCSRedisBusPackageVersion>1.9.0</EasyCachingCSRedisBusPackageVersion>
<EasyCachingRabbitBusPackageVersion>1.9.0</EasyCachingRabbitBusPackageVersion>
<EasyCachingKafkaBusPackageVersion>1.9.0</EasyCachingKafkaBusPackageVersion>
<EasyCachingZookeeperBusPackageVersion>1.9.0</EasyCachingZookeeperBusPackageVersion>
<EasyCachingDiskPackageVersion>1.9.0</EasyCachingDiskPackageVersion>
<EasyCachingMsExtPackageVersion>1.9.0</EasyCachingMsExtPackageVersion>
<EasyCachingLiteDBPackageVersion>1.9.0</EasyCachingLiteDBPackageVersion>
<EasyCachingSTJsonPackageVersion>1.9.0</EasyCachingSTJsonPackageVersion>
<EasyCachingMemoryPackageVersion>1.9.0</EasyCachingMemoryPackageVersion>
<EasyCachingFaskKVPackageVersion>1.9.0</EasyCachingFaskKVPackageVersion>
<EasyCachingCorePackageVersion>1.9.9</EasyCachingCorePackageVersion>
<EasyCachingMemcachedPackageVersion>1.9.9</EasyCachingMemcachedPackageVersion>
<EasyCachingRedisPackageVersion>1.9.9</EasyCachingRedisPackageVersion>
<EasyCachingSQLitePackageVersion>1.9.9</EasyCachingSQLitePackageVersion>
<EasyCachingInMemoryPackageVersion>1.9.9</EasyCachingInMemoryPackageVersion>
<EasyCachingHybridPackageVersion>1.9.9</EasyCachingHybridPackageVersion>
<EasyCachingAspectCorePackageVersion>1.9.9</EasyCachingAspectCorePackageVersion>
<EasyCachingCastlePackageVersion>1.9.9</EasyCachingCastlePackageVersion>
<EasyCachingResponseCachingPackageVersion>1.9.9</EasyCachingResponseCachingPackageVersion>
<EasyCachingJsonPackageVersion>1.9.9</EasyCachingJsonPackageVersion>
<EasyCachingMessagePackPackageVersion>1.9.9</EasyCachingMessagePackPackageVersion>
<EasyCachingProtobufPackageVersion>1.9.9</EasyCachingProtobufPackageVersion>
<EasyCachingCSRedisPackageVersion>1.9.9</EasyCachingCSRedisPackageVersion>
<EasyCachingRedisBusPackageVersion>1.9.9</EasyCachingRedisBusPackageVersion>
<EasyCachingCSRedisBusPackageVersion>1.9.9</EasyCachingCSRedisBusPackageVersion>
<EasyCachingRabbitBusPackageVersion>1.9.9</EasyCachingRabbitBusPackageVersion>
<EasyCachingRabbitStreamBusPackageVersion>1.9.9</EasyCachingRabbitStreamBusPackageVersion>
<EasyCachingKafkaBusPackageVersion>1.9.9</EasyCachingKafkaBusPackageVersion>
<EasyCachingZookeeperBusPackageVersion>1.9.9</EasyCachingZookeeperBusPackageVersion>
<EasyCachingDiskPackageVersion>1.9.9</EasyCachingDiskPackageVersion>
<EasyCachingMsExtPackageVersion>1.9.9</EasyCachingMsExtPackageVersion>
<EasyCachingLiteDBPackageVersion>1.9.9</EasyCachingLiteDBPackageVersion>
<EasyCachingSTJsonPackageVersion>1.9.9</EasyCachingSTJsonPackageVersion>
<EasyCachingMemoryPackageVersion>1.9.9</EasyCachingMemoryPackageVersion>
<EasyCachingFaskKVPackageVersion>1.9.9</EasyCachingFaskKVPackageVersion>
</PropertyGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/// RabbitMQ Bus options.
/// </summary>
public class RabbitMQBusOptions : BaseRabbitMQOptions
{
{
/// <summary>
/// Gets or sets the name of the queue.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
namespace Microsoft.Extensions.DependencyInjection
{
using System;
using EasyCaching.Bus.RabbitMQ;
using EasyCaching.Bus.RabbitMQStream;
using EasyCaching.Core;
using EasyCaching.Core.Configurations;
using Microsoft.Extensions.Configuration;

/// <summary>
/// EasyCaching options extensions.
/// </summary>
public static class EasyCachingOptionsExtensions
{
/// <summary>
/// Withs the RabbitMQStream bus (specify the config via hard code).
/// </summary>
/// <param name="options">Options.</param>
/// <param name="configure">Configure bus settings.</param>

public static EasyCachingOptions WithRabbitMQStreamBus(
this EasyCachingOptions options
, Action<RabbitMQBusOptions> configure
)
{
ArgumentCheck.NotNull(configure, nameof(configure));

options.RegisterExtension(new RabbitMQStreamBusOptionsExtension(configure));
return options;
}

/// <summary>
/// Withs the RabbitMQStream bus (read config from configuration file).
/// </summary>
/// <param name="options">Options.</param>
/// <param name="configuration">The configuration.</param>
/// <param name="sectionName">The section name in the configuration file.</param>
public static EasyCachingOptions WithRabbitMQStreamBus(
this EasyCachingOptions options
, IConfiguration configuration
, string sectionName = EasyCachingConstValue.RabbitMQBusSection
)
{
var dbConfig = configuration.GetSection(sectionName);
var busOptions = new RabbitMQBusOptions();
dbConfig.Bind(busOptions);

void configure(RabbitMQBusOptions x)
{
x.HostName = busOptions.HostName;
x.Password = busOptions.Password;
x.Port = busOptions.Port;
x.QueueMessageExpires = busOptions.QueueMessageExpires;
x.RequestedConnectionTimeout = busOptions.RequestedConnectionTimeout;
//x.RouteKey = busOptions.RouteKey;
x.SocketReadTimeout = busOptions.SocketReadTimeout;
x.SocketWriteTimeout = busOptions.SocketWriteTimeout;
x.TopicExchangeName = busOptions.TopicExchangeName;
x.UserName = busOptions.UserName;
x.VirtualHost = busOptions.VirtualHost;
x.QueueName = busOptions.QueueName;
}

options.RegisterExtension(new RabbitMQStreamBusOptionsExtension(configure));
return options;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
namespace EasyCaching.Bus.RabbitMQStream
{
using System;
using EasyCaching.Bus.RabbitMQ;
using EasyCaching.Core.Bus;
using EasyCaching.Core.Configurations;
using global::RabbitMQ.Client;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.ObjectPool;

/// <summary>
/// RabbitMQ Bus options extension.
/// </summary>
public class RabbitMQStreamBusOptionsExtension : IEasyCachingOptionsExtension
{
/// <summary>
/// The configure.
/// </summary>
private readonly Action<RabbitMQBusOptions> configure;

/// <summary>
/// Initializes a new instance of the <see cref="T:EasyCaching.Bus.RabbitMQ.RabbitMQBusOptionsExtension"/> class.
/// </summary>
/// <param name="configure">Configure.</param>
public RabbitMQStreamBusOptionsExtension(Action<RabbitMQBusOptions> configure)
{
this.configure = configure;
}

/// <summary>
/// Adds the services.
/// </summary>
/// <param name="services">Services.</param>
public void AddServices(IServiceCollection services)
{
services.AddOptions();
services.Configure(configure);

services.AddSingleton<IPooledObjectPolicy<IModel>, ModelPooledObjectPolicy>();
services.AddSingleton<IEasyCachingBus, DefaultRabbitMQStreamBus>();
}
}
}
Loading

0 comments on commit 93c7bf8

Please sign in to comment.