东莞php网站建设,网站建设注册名有规范吗,小区物业管理系统,网站建设静态部分实训总结EasyNetQ 是一个容易使用#xff0c;专门针对RabbitMQ的 .NET API。EasyNetQ是为了提供一个尽可能简洁的适用与RabbitMQ的.NET类库。下面看下怎么集成。1、nuget 安装2、配置连接串public static IBus CreateMessageBus(){// 消息服务器连接字符串var connectionString Confi… EasyNetQ 是一个容易使用专门针对RabbitMQ的 .NET API。EasyNetQ是为了提供一个尽可能简洁的适用与RabbitMQ的.NET类库。下面看下怎么集成。1、nuget 安装2、配置连接串public static IBus CreateMessageBus(){// 消息服务器连接字符串var connectionString ConfigurationManager.ConnectionStrings[RabbitMQConnString];if (connectionString null || connectionString.ConnectionString string.Empty){throw new Exception(messageserver connection string is missing or empty);}return RabbitHutch.CreateBus(connectionString.ConnectionString);}3、这边我们构建一个消息体/// summary/// 消息类实体/// /summary[Serializable]public class RabbitMQ_Message{public RabbitMQ_Message(){MessageID DateTime.Now.Ticks.ToString();}/// summary/// 消息id/// /summarypublic string MessageID { get; set; }/// summary/// 消息标题/// /summarypublic string MessageTitle { get; set; }/// summary/// 消息内容/// /summarypublic string MessageBody { get; set; }/// summary/// 消息管道/// /summarypublic RabbitMessageRouterEnum MessageRouter { get; set; }/// summary/// 游客id/// /summarypublic int customerId { get; set; }/// summary/// 标示代码 0:正确/// /summarypublic ResponseStatus result { get; set; }/// summary/// 消息类型/// /summarypublic SuperSocketMessageTypeEnum superSocketMessageType { get; set; }/// summary/// 消息过期时间毫秒/// /summarypublic int expiredMillSeconds { get; set; }}4、发送消息/// summary/// 发送消息/// /summarypublic static void Publish(RabbitMQ_Message msg){创建消息busIBus bus null;try{创建消息busbus BusBuilder.CreateMessageBus();bus.Publish(msg, x {x.WithTopic(${msg.MessageRouter.ToDescription()}.{msg.customerId});if (msg.expiredMillSeconds 0){x.WithExpires(msg.expiredMillSeconds);}});//通过管道发送消息 LogExtention.getInstance().WriteCustomLogAsync(msg, RabbitMQ消息发送, MQHelperPublish);}catch (EasyNetQException ex){LogExtention.getInstance().ErrorAsync(ex, RabbitMQ--MQHelper--Publish发布消息时出错);//处理连接消息服务器异常 }finally{if (bus ! null){bus.Dispose();//与数据库connection类似使用后记得销毁bus对象} }}4、接收消息/// summary/// 接收消息/// /summary/// param namemsg/parampublic static ISubscriptionResult Subscribe(RabbitMQ_Message msg, IProcessMessage ipro){创建消息busIBus bus null;try{bus BusBuilder.CreateMessageBus();//subscriptionId设置不同的话每一个subscriptionId都会收到相同的消息下面的写法只会有一个接收者var subscriptionResult bus.SubscribeRabbitMQ_Message(msg.MessageRouter.ToDescription(), message ipro.ProcessMsg(message),x x.WithQueueName(msg.customerId.ToString()).WithTopic(${msg.MessageRouter.ToDescription()}.{msg.customerId}));//subscriptionResult.Dispose();//取消订阅return subscriptionResult;}catch (EasyNetQException ex){LogExtention.getInstance().ErrorAsync(ex, RabbitMQ--MQHelper--Subscribe订阅消息时出错);//处理连接消息服务器异常 }finally{if (bus ! null){bus.Dispose();//与数据库connection类似使用后记得销毁bus对象}}return null;}在EasyNetQ中如果需要生产者确认功能则需要在Rabbitmq的连接配置中设置publisherConfirmstrue这将会开启自动确认。在使用高级api定义交换机和队列时可以自己定义多种参数比如消息是否持久化消息最大长度等等。