Сообщения RabbitMQ находятся в состоянии Unacked - PullRequest
1 голос
/ 18 марта 2019

При попытке прослушать полученное сообщение от RMQ, сообщения получаются, но сообщения в очереди все еще находятся в нераспакованном состоянии.

           ConnectionFactory factory = new ConnectionFactory();// assign factory details

           IConnection _connection = factory.CreateConnection();
           IModel  _model = _connection.CreateModel();
           _model.ExchangeDeclare("RmqExchangeName", "topic", true);
           var consumer = new EventingBasicConsumer(_model);

            consumer.Received += (object ch, BasicDeliverEventArgs ea) =>
            {
                   var message = Encoding.Default.GetString(ea.Body);

                    MemoryStream payloadstream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new UriDto { Url = message })));
                    Helper.Log("Start  Message");
                    // Do something with payloadstream
                    Helper.Log("Sent  Message");
                    _model.BasicAck(ea.DeliveryTag, false);
             };
           _model.BasicConsume(RmqQueueName, false, consumer);

1 Ответ

0 голосов
/ 18 марта 2019

вам нужно привязать ваш обмен к очереди, чтобы использовать ваше сообщение.

       ConnectionFactory factory = new ConnectionFactory();// assign factory details
       IConnection _connection = factory.CreateConnection();
       IModel  _model = _connection.CreateModel();
       _model.ExchangeDeclare("RmqExchangeName", "topic", true);
       _model.QueueBind(queue: queueName,exchange: "RmqExchangeName",routingKey: "");
       var consumer = new EventingBasicConsumer(_model);

        consumer.Received += (object ch, BasicDeliverEventArgs ea) =>
        {
               var message = Encoding.Default.GetString(ea.Body);

                MemoryStream payloadstream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new UriDto { Url = message })));
                Helper.Log("Start  Message");
                // Do something with payloadstream
                Helper.Log("Sent  Message");
                _model.BasicAck(ea.DeliveryTag, false);
         };
       _model.BasicConsume(RmqQueueName, true, consumer);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...