如何确保channel.basic_publish成功(互联网连接错误,...)?

时间:2014-04-05 20:33:07

标签: rabbitmq

我这样做:

channel.basicPublish("myexchange", "routing", MessageProperties.PERSISTENT_TEXT_PLAIN,
                "message".getBytes());

如果发布没有成功(连接丢失,...),我想稍后重试发送消息但是basicPublish是一个void函数,并且参数中没有回调

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您正在寻找HA客户, 默认情况下,您必须自己实现该功能。

如果您使用java,则: https://github.com/joshdevins/rabbitmq-ha-client(它只是有点旧,但它认为它仍然有用)。

无论如何,如果你想实现你已经捕获异常的功能并在以后重试。

如果客户端失去连接,则应在重新发送消息之前重新连接客户端。

在版本3.3.0上,最后一个功能默认实现为java客户端:

  

java客户端

     

增强   如果连接,14587支持自动重新连接到服务器         中断

这一点非常重要,您希望按顺序发送消息。

一个简单的解决方案是将消息放入客户端列表中,然后仅在消息已正确发送时才从列表中删除消息。

我认为你也可以找到有趣的Publisher Acknowledgements