Net使用EasyNetQ简化与RabbitMQ的交互
EasyNetQ是一个为.NET环境设计的RabbitMQ客户端API,旨在简化与RabbitMQ的交互。
关于RabbitMq的更多知识点在:https://www.dotnetshare.com
公众号:Net分享,欢迎关注
安装EasyNetQ
你可以通过NuGet包管理器来安装EasyNetQ。在Package Manager Console中运行以下命令:
PM> Install-Package EasyNetQ
这将同时安装EasyNetQ和其依赖的RabbitMQ.Client库。 建议使用DI安装,EasyNetQ.DI.Microsof包含EasyNetQ,同时依赖Newtonsoft.Json
注册连接RabbitMQ
var connectionString = "host=111.111.11.111;virtualHost=/;username=admin;password=123456;timeout=60";
//链接注册
builder.Services.RegisterEasyNetQ("host=8.153.70.182;virtualHost=/;username=zhaoke;password=123123;publisherConfirms=true");
//发布注册
builder.Services.AddTransient();
//订阅注册
builder.Services.AddTransient();
//添加消息处理
builder.Services.AddHostedService();
发布消息
EasyNetQ支持发布/订阅模式,你可以通过创建一个.NET类来定义消息,然后使用Publish方法发布消息。例如:
public class TextMessage
{
public string Text { get; set; }
}
bus.Publish(new TextMessage { Text = "Hello World" });
EasyNetQ会根据消息类型自动创建交换机和队列,并使用Newtonsoft.Json序列化消息为JSON格式。
MQPublish的封装
using EasyNetQ.Topology;
using EasyNetQ;
///
/// 发布消息
///
public class MQPublish
{
private readonly IBus bus;
public MQPublish(IBus bus)
{
this.bus = bus;
}
///
/// 发布消息
///
///
///
public async Task PublishMessageAsync(string routingKey, object data)
{
Console.WriteLine($"MQ消息推送,routingKey :{routingKey} , 推送数据 :{System.Text.Json.JsonSerializer.Serialize(data)}");
var message = new Message