2

服务器 A 和 B 位于 2 个不同的物理位置 - 每个位置都有一个 RabbitMQ 实例。连接这些地点的网络很糟糕,而且完全不可靠。应用程序的具体要求是放置在服务器 A 队列上的消息镜像到服务器 B 上,反之亦然。

不可靠的网络似乎在消息传递的可靠性方面造成了严重破坏——我目前正在使用铲子插件,但它似乎在奇怪的情况下会丢弃消息。我只能假设消息在正确传递到目标队列之前已从源队列中得到确认,但日志中没有任何内容表明这是正在发生的事情

有没有更好的方法可以在这样的不可靠网络上实现此队列镜像?我已经考虑完全删除队列,而是转向更同步的方法(可能是 http api),但我不希望在不了解是否有更好的方法来实现跨片状网络连接的镜像队列或如何我可以更准确地确定问题所在。

4

1 回答 1

1

铲子的设计考虑到了失败。确保ack_mode将铲子配置设置为on_confirm. 这样,在完全确认已传送到目标代理之前,消息不会从源代理中消失。见参考

于 2013-03-06T21:07:58.350 回答