Beispiel #1
0
 public void Close( )
 {
     try {
         if (ListenChannel != null)
         {
             ListenChannel.Close( );
         }
         ListenChannel = null;
         CloseData( );
     } catch (IOException ioe) {
         Log.w("ddms", ioe);
     }
 }
Beispiel #2
0
 /// <summary>
 /// 接收到消息触发事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private void Consumer_Received(object sender, BasicDeliverEventArgs args)
 {
     try {
         var body    = args.Body;
         var message = Encoding.UTF8.GetString(body);
         //将消息业务处理交给外部业务
         bool result = ReceiveMessageCallback(message);
         if (result)
         {
             if (ListenChannel != null && !ListenChannel.IsClosed)
             {
                 ListenChannel.BasicAck(args.DeliveryTag, false);
             }
         }
         else
         {
         }
     }
     catch (Exception ex) {
         throw ex;
     }
 }
Beispiel #3
0
        /// <summary>
        /// 消费信息
        /// </summary>
        /// <param name="queueName"></param>
        public void Consume()
        {
            var factory = RabbitMQFactory.Instance.CreateFactory();

            var connection = factory.CreateConnection();

            connection.ConnectionShutdown += Connection_ConnectionShutdown;

            ListenChannel = connection.CreateModel();


            bool autoDeleteMessage = false;
            var  queue             = ListenChannel.QueueDeclare(_queueName, RabbitMQConfig.IsDurable, false, false, null);

            //公平分发,不要同一时间给一个工作者发送多于一个消息
            ListenChannel.BasicQos(0, 1, false);
            //创建事件驱动的消费者类型,不要用下边的死循环来消费消息
            var consumer = new EventingBasicConsumer(ListenChannel);

            consumer.Received += Consumer_Received;
            //消费消息
            ListenChannel.BasicConsume(_queueName, autoDeleteMessage, consumer);
        }