Пример #1
0
        /// <summary>
        /// 接收消息
        /// </summary>
        /// <param name="queueName"></param>
        /// <param name="delegateHandle"></param>
        public void GetQueueMessage(string queueName, ReceiveActionDelegate delegateHandle)
        {
            using (var connection = _factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: queueName,
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);

                    var consumer = new EventingBasicConsumer(channel);

                    consumer.Received += (model, ea) =>
                    {
                        channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                        var    body = ea.Body;
                        object objval;
                        objval = CommonHelper.BytesToObject(body);
                        delegateHandle(objval);
                        WriteLogHelper.WriteLogDoc("GetQueueLog", "队列" + queueName + "获取数据成功", "rabbitMqLog");
                    };
                    channel.BasicConsume(queue: queueName,
                                         autoAck: false,
                                         consumer: consumer);
                }
        }
Пример #2
0
        /// <summary>
        /// 接收消息
        /// </summary>
        /// <param name="exchangeName"></param>
        /// <param name="queueName"></param>
        /// <param name="rootingkey"></param>
        /// <param name="delegateHandle"></param>
        public void GetQueueMessage(string exchangeName, string queueName, string rootingkey, ReceiveActionDelegate delegateHandle)
        {
            using (var connection = _factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.ExchangeDeclare(exchange: exchangeName,
                                            type: "direct");
                    channel.QueueDeclare(queue: queueName,
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);
                    ///绑定交换机队列
                    channel.QueueBind(queue: queueName,
                                      exchange: exchangeName,
                                      routingKey: rootingkey);

                    var consumer = new EventingBasicConsumer(channel);
                    //声明方法
                    consumer.Received += (model, ea) =>
                    {
                        channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                        var    body = ea.Body;
                        object objval;
                        objval = CommonHelper.BytesToObject(body);
                        delegateHandle(objval);
                        WriteLogHelper.WriteLogDoc("GetExchangeQueueLog", "交换机:" + exchangeName + "绑定队列:" + queueName + "获取数据成功", "rabbitMqLog");
                    };
                    channel.BasicConsume(queue: queueName,
                                         autoAck: false,
                                         consumer: consumer);
                }
        }
Пример #3
0
        /// <summary>
        /// 创建消息
        /// </summary>
        /// <param name="queueName"></param>
        /// <param name="obj"></param>
        public void CreateExchangeMessage(string exchangename, string rootingkey, object obj)
        {
            using (var connection = _factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.ExchangeDeclare(exchange: exchangename,
                                            type: "direct");

                    var body = CommonHelper.ObjectToBytes(obj);

                    IBasicProperties props = channel.CreateBasicProperties();
                    props.ContentType  = "text/plain";
                    props.DeliveryMode = 2;

                    channel.BasicPublish(exchange: exchangename,
                                         routingKey: rootingkey,
                                         basicProperties: props,
                                         body: body);
                    WriteLogHelper.WriteLogDoc("CreateExchangeQueueLog", "创建交换机" + exchangename + "加了数据", "rabbitMqLog");
                }
        }
Пример #4
0
        /// <summary>
        /// 创建消息
        /// </summary>
        /// <param name="queueName"></param>
        /// <param name="obj"></param>
        public void CreateQueueMessage(string queueName, object obj)
        {
            using (var connection = _factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: queueName,
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);


                    var body = CommonHelper.ObjectToBytes(obj);

                    var properties = channel.CreateBasicProperties();
                    properties.Persistent = true;

                    channel.BasicPublish(exchange: "",
                                         routingKey: queueName,
                                         basicProperties: properties,
                                         body: body);
                    WriteLogHelper.WriteLogDoc("CreateQueueLog", "队列" + queueName + "加了数据", "rabbitMqLog");
                }
        }