1.RabbitMQ接收消息
private readonly static string exchange = "exchange_to_cs"; //定义交换机 private readonly static string queue = "queue_to_cs"; //定义队列 /// <summary> /// 获取rabbitmq信道 /// </summary> /// <returns></returns> public static IConnection GetChannel() { //实例连接工厂 ConnectionFactory factory = new ConnectionFactory(); factory.HostName = HostName; factory.Port = Convert.ToInt16(Port); factory.UserName = UserName; factory.Password = Password; factory.VirtualHost = VirtualHost; factory.Protocol = Protocols.DefaultProtocol; IConnection connection = factory.CreateConnection(); return connection; } //封装的接受方法 public void Genrate() { try { //获取信道 SetMsgWaybill("开启服务..."); IConnection connection = GetChannel(); SetMsgWaybill("已成功建立连接..."); var channel = connection.CreateModel(); //声明交换机 channel.ExchangeDeclare(exchange: exchange, type: "topic"); var queueArgs = new Dictionary<string, object>() { }; //声明队列 channel.QueueDeclare(queue: queue, durable: true, exclusive: false, autoDelete: false, arguments: queueArgs); //为队列绑定交换机 channel.QueueBind(queue: queue, exchange: exchange, routingKey: "#"); //定义队列 SetMsgWaybill(string.Format("等待接收消息...")); EventingBasicConsumer consumer3 = new EventingBasicConsumer(channel); consumer3.Received += (sender, eventArgs) => { var _sender = (EventingBasicConsumer)sender; //消息传送者 var _channel = _sender.Model; //消息传送通道 var _message = (BasicDeliverEventArgs)eventArgs; //消息传送参数 var _headers = _message.BasicProperties.Headers; //消息头 var _content = Encoding.UTF8.GetString(_message.Body); //消息内容 string body = Encoding.UTF8.GetString(eventArgs.Body.ToArray()); string error = string.Empty; try { if (!string.IsNullOrEmpty(body)) { //处理传过来的body信息 } else { channel.BasicAck(eventArgs.DeliveryTag, false); } } catch (Exception ex) { } }; channel.BasicConsume(queue, false, consumer3); } catch (Exception ex) { } }
RabbitMQ接收消息
于 2024-12-17 11:24:59 首次发布