RabbitMQ EasyNetq 用法
EasyNETQ帮助类
public class MQHelper { /// <summary> /// 发送消息 /// </summary> public static void Publish(Message msg) { //// 创建消息bus IBus bus = BusBuilder.CreateMessageBus(); try { bus.Publish(msg, x => x.WithTopic(msg.MessageRouter)); } catch (EasyNetQException ex) { System.Console.WriteLine("发送消息:" + ex.Message); //处理连接消息服务器异常 } bus.Dispose();//与数据库connection类似,使用后记得销毁bus对象 } /// <summary> /// 接收消息 /// </summary> /// <param name="msg"></param> public static void Subscribe(Message msg, IProcessMessage ipro) { //// 创建消息bus IBus bus = BusBuilder.CreateMessageBus(); try { bus.Subscribe<Message>(msg.MessageRouter, message => ipro.ProcessMsg(message), x => x.WithTopic(msg.MessageRouter)); System.Console.WriteLine("订阅消息成功"); } catch (EasyNetQException ex) { System.Console.WriteLine("订阅消息失败:" + ex.Message); } //与数据库connection类似,使用后记得销毁bus对象 } }
public class BusBuilder { public static IBus CreateMessageBus() { //消息服务器连接字符串 var connectionString = ConfigurationManager.ConnectionStrings["RabbitMQ"]; if (connectionString == null || connectionString.ConnectionString == string.Empty) { throw new Exception("messageserver connection string is missing or empty"); } return RabbitHutch.CreateBus(connectionString.ConnectionString); } }
public interface IProcessMessage { void ProcessMsg(Message msg); void Notice(); }
public class Message { public string MessageID { get; set; } public string MessageTitle { get; set; } public string MessageBody { get; set; } public string MessageRouter { get; set; } }