📜  统一弹丸传播 - C# (1)

📅  最后修改于: 2023-12-03 15:27:36.679000             🧑  作者: Mango

统一弹丸传播 - C#

简介

统一弹丸传播是一款使用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)
{
    // 处理逻辑
}
总结

统一弹丸传播是一款非常好用的消息传递框架,支持多种消息传递模式,可以帮助我们快速实现进程内、进程间通讯以及分布式系统之间的消息传递。