我创建了一个使用RabbitMQ进行消息传递的基本应用程序。消息在一台服务器上发布,然后下游的另一台服务器将有一个消耗信息的长时间运行的进程。现在,我把它设置如下:RabbitMQ/AMQP HA App:消费者死亡/退出后的持续队列?
出版商:
- 声明直接交换myexchange
- 发布消息myexchange交换路由键payload.routingkey
Co nsumer程序:
- 声明直接交换myexchange
- 声明队列我的专用队列名称(可选择耐用设置为
true
) - 绑定我的专用队列名称排队到myexchange exchange
- 从消费消息my-specific-queue-name
我已经有了这个过程运作良好。我遇到的情况是,如果我的消费者程序死亡,似乎发布到myexchange的新消息将丢失,因为没有队列将被绑定到交换机。是否有一种配置,即使消费者程序消失,消息仍然可以排队,以便当消费者程序重新联机时,消息仍然能够被接收?
哪些是您使用的书写语言的客户端? – cantSleepNow
@cantSleepNow为两个客户端使用perl。我正在使用[Net :: RabbitMQ](https://metacpan.org/pod/Net::RabbitMQ)模块。 – Devin
检查声明队列时,什么是“独家”参数的默认值。由于您将“持久”设置为true,因此可能是,如果“排他”为真,那么一旦消费者断开或死亡,队列就会被删除 – cantSleepNow