【问题标题】:RabbitMQ RPC How to automatically delete the callback queueRabbitMQ RPC 如何自动删除回调队列
【发布时间】:2021-03-28 10:29:21
【问题描述】:

我想知道客户端收到回调消息后如何删除回调队列。在多次 RPC 调用之后,我有很多 callback 队列我不再使用了。

我将回调队列声明如下:

replyToQueueName = _channelListener.QueueDeclare(durable: false,
exclusive: false, autoDelete: true, arguments: null).QueueName;

我以为它们会在使用后被删除,但事实并非如此。我可以通过管理插件看到队列仍然有消费者。

也许我必须在收到回调消息后删除队列,但我不确定是最好的方法:channel.QueueDelete("queue-name", false, false);

我一直在用这个tutorial

【问题讨论】:

    标签: c# rabbitmq


    【解决方案1】:

    我找到了解决方案(不确定是否是最佳解决方案)。 收到回调消息后,我取消订阅消费者:

    channel.BasicCancel(consumer.ConsumerTags[0]);

    这样回调队列没有消费者,立即删除。

    Cancelling a Consumer (Unsubscribing)

    【讨论】: