EasilyNET.RabbitBus.AspNetCore
4.25.1.1
dotnet add package EasilyNET.RabbitBus.AspNetCore --version 4.25.1.1
NuGet\Install-Package EasilyNET.RabbitBus.AspNetCore -Version 4.25.1.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EasilyNET.RabbitBus.AspNetCore" Version="4.25.1.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EasilyNET.RabbitBus.AspNetCore --version 4.25.1.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: EasilyNET.RabbitBus.AspNetCore, 4.25.1.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install EasilyNET.RabbitBus.AspNetCore as a Cake Addin #addin nuget:?package=EasilyNET.RabbitBus.AspNetCore&version=4.25.1.1 // Install EasilyNET.RabbitBus.AspNetCore as a Cake Tool #tool nuget:?package=EasilyNET.RabbitBus.AspNetCore&version=4.25.1.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
EasilyNET.RabbitBus.AspNetCore
支持延时队列,服务端需要启用 rabbitmq-delayed-message-exchange 插件
- 支持同一个消息被多个 Handler 消费
- 若是就是想写多个 Handler 但是又希望某些 Handler 不执行,可以在不需要的 Handler 上标记 [IgnoreHandler] 特性
如何使用
- 首先使用 Nuget 包管理工具添加依赖 EasilyNET.RabbitBus.AspNetCore
- 等待下载完成和同意开源协议后,即可使用本库.
- Step1.在 Program.cs 中配置消息总线
// 配置服务(亦可使用集群模式或者使用配置文件,或者环境变量.)
builder.Services.AddRabbitBus(c =>
{
c.Host = "192.168.2.110";
c.Port = 5672;
c.UserName = "username";
c.PassWord = "password";
c.PoolCount = (uint)Environment.ProcessorCount;
c.RetryCount = 5;
...
});
- Step2.接下来配置事件和事件处理器
/// <summary>
/// 测试消息类型,消息继承自 IEvent 或者 Event
/// </summary>
[Exchange("hoyo.test", EModel.Routing, "test", "orderqueue2")]
public class TestEvent : Event
{
/// <summary>
/// 消息
/// </summary>
public string Message { get; set; } = default!;
}
/// <summary>
/// 消息处理Handler
/// </summary>
public class TestEventHandler(ILogger<TestEventHandler> logger) : IEventHandler<TestEvent>
{
/// <summary>
/// 当消息到达的时候执行的Action
/// </summary>
/// <param name="event"></param>
/// <returns></returns>
public Task HandleAsync(TestEvent @event)
{
logger.LogInformation("TestEvent_{event}-----{date}", @event.Message, DateTime.Now);
return Task.CompletedTask;
}
}
/// <summary>
/// 若是存在同一个消息多个 Handler 实现,比如这里我们写了两个 Handler,那么发送一次消息这两个 Handler 均会执行.
/// </summary>
/// 若是不希望这个 Handler 执行可以标记
[IgnoreHandler]
public class TestEventHandlerSecond(ILogger<TestEventHandlerSecond> logger) : IEventHandler<TestEvent>
{
/// <summary>
/// 当消息到达的时候执行的Action
/// </summary>
/// <param name="event"></param>
/// <returns></returns>
public Task HandleAsync(TestEvent @event)
{
logger.LogInformation("TestEvent_{event}-----{date}", @event.Message, DateTime.Now);
return Task.CompletedTask;
}
}
- Step3.使用消息队列发送消息
private readonly IBus _ibus;
// 控制器构造函数伪代码
construct(IBus ibus){
_ibus = ibus;
}
/// <summary>
/// 创建一个延时消息,同时发送一个普通消息做对比
/// </summary>
[HttpPost("TTLTest")]
public async Task TTLTest()
{
var rand = new Random();
var ttl = rand.Next(1000, 10000);
var ttlobj = new DelayedMessageEvent() { Message = $"延迟{ttl}毫秒,当前时间{DateTime.Now:yyyy-MM-dd HH:mm:ss}" };
// 延时队列需要服务端安装延时队列插件.
await _ibus.Publish(ttlobj, (uint)ttl);
await _ibus.Publish(ttlobj);
}
使用自定义序列化器
- 默认序列化器是 System.Text.Json,若是需要使用其他序列化器,可以实现 IBusSerializer 接口,然后在配置中指定序列化器.
- 若是单独开启一个项目用于该实现,推荐使用基础 Nuget 包 EasilyNET.RabbitBus.Core 然后实现 IBusSerializer 接口即可.这里以 MessagePack 为例.
/// <summary>
/// MessagePackSerializer
/// </summary>
public sealed class MsgPackSerializer : IBusSerializer
{
private static readonly MessagePackSerializerOptions standardOptions =
MessagePackSerializerOptions.Standard
.WithResolver(CompositeResolver.Create(NativeDateTimeResolver.Instance, // 使用本地日期时间解析器
ContractlessStandardResolver.Instance)) // 使用无合约标准解析器
.WithSecurity(MessagePackSecurity.UntrustedData); // 设置安全选项以处理不受信任的数据
/// <summary>
/// 使用 LZ4 算法对整个数组进行压缩.这种方式适用于需要对大量数据进行压缩的场景,压缩效率较高
/// </summary>
private static readonly MessagePackSerializerOptions lz4BlockArrayOptions =
standardOptions.WithCompression(MessagePackCompression.Lz4BlockArray);
/// <summary>
/// 使用 LZ4 算法对每个数据块进行压缩.这种方式适用于需要对单个数据块进行压缩的场景,压缩速度较快
/// </summary>
private static readonly MessagePackSerializerOptions lz4BlockOptions =
standardOptions.WithCompression(MessagePackCompression.Lz4Block);
/// <inheritdoc />
public byte[] Serialize(object? obj, Type type)
{
var data = MessagePackSerializer.Serialize(type, obj, standardOptions);
var options = data.Length > 8192 ? lz4BlockArrayOptions : lz4BlockOptions;
return MessagePackSerializer.Serialize(type, obj, options);
}
/// <inheritdoc />
public object? Deserialize(byte[] data, Type type)
{
var options = data.Length > 8192 ? lz4BlockArrayOptions : lz4BlockOptions;
return MessagePackSerializer.Deserialize(type, data, options);
}
}
- 然后调整服务注册代码添加如下内容
// 配置服务(亦可使用集群模式或者使用配置文件,或者环境变量.)
builder.Services.AddRabbitBus(c =>
{
...
c.BusSerializer = new MsgPackSerializer();
...
});
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- EasilyNET.RabbitBus.Core (>= 4.25.1.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Resilience (>= 9.0.0)
- RabbitMQ.Client (>= 7.0.0)
-
net9.0
- EasilyNET.RabbitBus.Core (>= 4.25.1.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Resilience (>= 9.0.0)
- RabbitMQ.Client (>= 7.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
4.25.1.1 | 34 | 1/1/2025 |
3.24.1224.141 | 76 | 12/24/2024 |
3.24.1216.116 | 83 | 12/16/2024 |
3.24.1206.100 | 57 | 12/6/2024 |
3.24.1205.171 | 60 | 12/5/2024 |
3.24.1202.150 | 58 | 12/2/2024 |
3.24.1126.231 | 58 | 11/26/2024 |
3.24.1126.172 | 57 | 11/26/2024 |
3.24.1126.114 | 55 | 11/26/2024 |
3.24.1126.104 | 54 | 11/26/2024 |
3.24.1125.181 | 47 | 11/25/2024 |
3.24.1125.104 | 55 | 11/25/2024 |
3.24.1121.183 | 53 | 11/21/2024 |
3.24.1120.183 | 53 | 11/20/2024 |
3.24.1119.31 | 53 | 11/18/2024 |
3.24.1115.143 | 42 | 11/15/2024 |
3.24.1113.100 | 55 | 11/13/2024 |
3.24.1112.125 | 141 | 11/12/2024 |
3.24.1107.140 | 53 | 11/7/2024 |
3.24.1107.54 | 53 | 11/7/2024 |
3.24.1107.34 | 55 | 11/7/2024 |
3.24.1105.111 | 58 | 11/5/2024 |
3.24.1103.31 | 63 | 11/2/2024 |
3.24.1103 | 57 | 11/2/2024 |
3.24.1031.135 | 49 | 10/31/2024 |
3.24.1031.112 | 51 | 10/31/2024 |
3.24.1031.104 | 50 | 10/31/2024 |
3.24.1029.142 | 54 | 10/29/2024 |
3.24.1025.30 | 152 | 10/24/2024 |
3.24.1022.142 | 45 | 10/22/2024 |
3.24.1018.204 | 111 | 10/18/2024 |
3.24.1018.175 | 106 | 10/18/2024 |
3.24.1018.166 | 105 | 10/18/2024 |
3.24.1018.93 | 108 | 10/18/2024 |
3.24.1017.42 | 56 | 10/16/2024 |
3.24.1016.161 | 60 | 10/16/2024 |
3.24.1015.231 | 58 | 10/15/2024 |
3.24.1015.14 | 60 | 10/14/2024 |
3.24.1012.114 | 55 | 10/12/2024 |
3.24.1009.115 | 59 | 10/9/2024 |
3.24.1008.160 | 59 | 10/8/2024 |
3.24.1008.133 | 55 | 10/8/2024 |
3.24.1007.185 | 56 | 10/7/2024 |
3.24.1003.33 | 62 | 10/2/2024 |
3.24.1002.162 | 60 | 10/2/2024 |
3.24.929.143 | 56 | 9/29/2024 |
3.24.929.141 | 55 | 9/29/2024 |
3.24.929.131 | 55 | 9/29/2024 |
3.24.929.122 | 59 | 9/29/2024 |
3.24.926.184 | 61 | 9/26/2024 |
3.24.926.182 | 60 | 9/26/2024 |
3.24.926.175 | 61 | 9/26/2024 |
3.24.924.160 | 58 | 9/24/2024 |
3.24.924.133 | 70 | 9/24/2024 |
3.24.924.124 | 59 | 9/24/2024 |
3.24.924.10 | 62 | 9/23/2024 |
3.24.924.1 | 54 | 9/23/2024 |
3.24.923.234 | 57 | 9/23/2024 |
3.24.923.232 | 58 | 9/23/2024 |
3.24.923.155 | 57 | 9/23/2024 |
3.24.919.92 | 69 | 9/19/2024 |
3.24.914.125 | 65 | 9/14/2024 |
3.24.914.115 | 65 | 9/14/2024 |
3.24.914.111 | 65 | 9/14/2024 |
3.24.911.95 | 64 | 9/11/2024 |
3.24.908.215 | 58 | 9/8/2024 |
3.24.904.200 | 66 | 9/4/2024 |
3.24.828.163 | 70 | 8/28/2024 |
3.24.820.173 | 74 | 8/20/2024 |
3.24.814.92 | 82 | 8/14/2024 |
3.24.812.115 | 74 | 8/12/2024 |
3.24.802.100 | 52 | 8/2/2024 |
3.24.801.162 | 58 | 8/1/2024 |
3.24.801.160 | 62 | 8/1/2024 |
3.24.801.155 | 60 | 8/1/2024 |
3.24.730.164 | 49 | 7/30/2024 |
3.24.730.91 | 47 | 7/30/2024 |
3.24.724.91 | 55 | 7/24/2024 |
3.24.718.105 | 78 | 7/18/2024 |
3.24.716.95 | 67 | 7/16/2024 |
3.24.712.94 | 62 | 7/12/2024 |
3.24.710.14 | 62 | 7/9/2024 |
3.24.709.105 | 70 | 7/9/2024 |
3.24.704.94 | 63 | 7/4/2024 |
3.24.701.90 | 61 | 7/1/2024 |
3.24.628.114 | 70 | 6/28/2024 |
3.24.627.145 | 63 | 6/27/2024 |
3.24.620.160 | 71 | 6/20/2024 |
3.24.613.115 | 66 | 6/13/2024 |
3.24.612.95 | 72 | 6/12/2024 |
3.24.528.90 | 67 | 5/28/2024 |
3.24.522.84 | 83 | 5/22/2024 |
3.24.512.213 | 63 | 5/12/2024 |
3.24.508.112 | 82 | 5/8/2024 |
2.2024.428.71 | 75 | 4/28/2024 |
2.2024.427.1128 | 78 | 4/27/2024 |
2.2.72 | 86 | 4/14/2024 |
2.2.71 | 67 | 4/12/2024 |
2.2.8 | 71 | 4/26/2024 |
2.2.6 | 67 | 4/10/2024 |
2.2.5 | 87 | 3/26/2024 |
2.2.4 | 86 | 3/25/2024 |
2.2.3 | 75 | 3/24/2024 |
2.2.2 | 80 | 3/21/2024 |
2.2.1 | 82 | 3/20/2024 |
2.2.0 | 88 | 3/13/2024 |
2.1.9 | 80 | 2/21/2024 |
2.1.8 | 81 | 2/18/2024 |
2.1.7 | 86 | 2/16/2024 |
2.1.6 | 99 | 2/14/2024 |
2.1.5 | 76 | 2/14/2024 |
2.1.4 | 101 | 2/9/2024 |
2.1.3 | 79 | 2/8/2024 |
2.1.2 | 109 | 2/5/2024 |
2.1.1.2 | 158 | 12/26/2023 |
2.1.1.1 | 94 | 12/26/2023 |
2.1.1 | 94 | 12/25/2023 |
2.1.0 | 110 | 12/17/2023 |
2.0.11 | 143 | 12/6/2023 |
2.0.1 | 138 | 11/15/2023 |
2.0.0 | 94 | 11/14/2023 |
1.9.1 | 111 | 11/1/2023 |
1.9.0 | 104 | 10/19/2023 |
1.9.0-preview2 | 208 | 10/12/2023 |
1.9.0-preview1 | 82 | 10/12/2023 |
1.8.9 | 130 | 10/11/2023 |
1.8.8 | 124 | 10/11/2023 |
1.8.7-rc2 | 87 | 9/21/2023 |
1.8.7-rc1 | 84 | 9/12/2023 |
1.8.6 | 124 | 8/31/2023 |
1.8.5 | 539 | 8/25/2023 |
1.8.4 | 113 | 8/24/2023 |
1.8.3 | 110 | 8/23/2023 |
1.8.2 | 154 | 8/22/2023 |
1.8.1 | 114 | 8/18/2023 |
1.8.0 | 115 | 8/15/2023 |
1.7.9 | 138 | 8/11/2023 |
1.7.8 | 112 | 8/11/2023 |
1.7.7 | 125 | 8/10/2023 |
1.7.6 | 121 | 8/9/2023 |
1.7.5 | 143 | 8/9/2023 |
1.7.4 | 161 | 8/3/2023 |
1.7.3 | 128 | 8/1/2023 |
1.7.2 | 126 | 7/31/2023 |
1.7.1 | 119 | 7/27/2023 |
1.7.0 | 126 | 7/25/2023 |
1.6.9 | 127 | 7/25/2023 |
1.6.8 | 117 | 7/24/2023 |
1.6.7 | 131 | 7/20/2023 |
1.6.6 | 125 | 7/19/2023 |
1.6.5 | 94 | 7/19/2023 |
1.6.4 | 117 | 7/17/2023 |
1.6.3 | 113 | 7/17/2023 |
1.6.2 | 132 | 7/12/2023 |
1.6.1 | 130 | 6/30/2023 |
1.6.0 | 110 | 6/30/2023 |