我正在使用node-amqp和rabbit作为一些pub / sub工具。我想知道当某人/某事(在其他过程中)已经破坏了他们正在侦听的队列时,是否可以通知订阅者。
例如,第一个过程:
connection.queue(name = "test-queue1", options, function(queue) {
queue.subscribe({}, function(message, headers, deliveryInfo) {
deliverMessage(message);
}).once('error', function(error) {
logger.error(error)
}).once("queueDeleteOk", function bindHandler() {
queue.close();
});
};
现在,其他进程可能会破坏该队列。订阅者如何知道这一点?例如,流程2可以:
connection.queue(name = "test-queue1", options, function(queue) {
queue.destroy(delete_options);
}).once("queueDeleteOk", function bindHandler() {
queue.close();
});
我试图监听有效的“queueDeletedOk”事件,但它只在进程2中发出和接收,这正在破坏队列。尝试在队列上“关闭”事件也是如此。
感谢和最诚挚的问候,
答案 0 :(得分:2)
RabbitMQ支持消费者取消通知:http://www.rabbitmq.com/consumer-cancel.html
我不知道您正在使用的库,但这里的[1]是由前RabbitMQ核心开发人员创建的,并且支持消费者取消通知。
1 - http://squaremo.github.io/amqp.node/doc/channel_api.html