RabbitMQ接收消息

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)
            {
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值