📅  最后修改于: 2023-12-03 15:27:36.679000             🧑  作者: Mango
统一弹丸传播是一款使用C#编写的轻量级消息传递框架,可以用于实现进程内、进程间通讯以及分布式系统之间的消息传递。
可以直接使用NuGet进行安装:
Install-Package UnifiedMessagePropagation
在订阅消息的类中实现相应的处理方法,然后在application启动时进行订阅即可:
IMessageHub messageHub = new MessageHub();
messageHub.Subscribe<MyMessage>(HandleMyMessage);
private void HandleMyMessage(MyMessage message)
{
// 处理逻辑
}
在发布消息时,只需要获取到IMessageHub
实例,然后调用Publish
方法即可:
IMessageHub messageHub = new MessageHub();
messageHub.Publish(new MyMessage());
发送消息需要指定消息接收者的地址,以及消息的内容:
IMessageHub messageHub = new MessageHub();
messageHub.Send("receiver_address", new MyMessage());
接收消息需要先进行订阅,然后在消息到达时进行处理:
IMessageHub messageHub = new MessageHub();
messageHub.Subscribe<MyMessage>(HandleMyMessage);
private void HandleMyMessage(MyMessage message, MessageHeader header)
{
// 处理逻辑
}
在订阅消息时,可以使用async/await
来定义异步处理逻辑:
IMessageHub messageHub = new MessageHub();
messageHub.SubscribeAsync<MyMessage>(HandleMyMessageAsync);
private async Task HandleMyMessageAsync(MyMessage message)
{
// 处理逻辑
}
可以为消息订阅添加过滤器,只有满足条件的消息才能被处理:
IMessageHub messageHub = new MessageHub();
messageHub.Subscribe<MyMessage>(HandleMyMessage, filter: x => x.Id == 1);
private void HandleMyMessage(MyMessage message)
{
// 处理逻辑
}
可以为消息订阅开启消息持久化,当应用程序重启时,可以加载未处理的消息:
IMessageHub messageHub = new MessageHub();
messageHub.Subscribe<MyMessage>(HandleMyMessage, persistent: true);
private void HandleMyMessage(MyMessage message)
{
// 处理逻辑
}
统一弹丸传播是一款非常好用的消息传递框架,支持多种消息传递模式,可以帮助我们快速实现进程内、进程间通讯以及分布式系统之间的消息传递。