【发布时间】:2017-08-10 06:21:42
【问题描述】:
我正在尝试实现 RabbitMQ 请求-响应模式。
我的目标是始终有一个消费者监听队列并回复消息。
所以我设置了服务器:
var consumer = new EventingBasicConsumer(channel);
channel.BasicConsume(queue: 'listensToThisQueue',
noAck: true,
consumer: consumer);
consumer.Received += (model, ea) =>
{
// Replying to client
channel.BasicPublish(exchange: '',
routingKey: routingKey,
basicProperties: props,
body: message);
// Basic ack
channel.BasicAck(deliveryTag: incomingDeliveryTag,
multiple: false);
}
实际上一切正常:
- 客户端发送第一条消息
- 服务器接收和回复
- 客户端收到消息
唯一的问题是在完成Received方法之后(在执行BasicAck之后)-消费者停止监听listenToQueue(我实际上在UI管理中看到这个队列上有0个消费者)。
为什么会这样?
【问题讨论】: