我这样做:
channel.basicPublish("myexchange", "routing", MessageProperties.PERSISTENT_TEXT_PLAIN,
"message".getBytes());
如果发布没有成功(连接丢失,...),我想稍后重试发送消息但是basicPublish是一个void函数,并且参数中没有回调
有什么想法吗?
答案 0 :(得分:0)
您正在寻找HA客户, 默认情况下,您必须自己实现该功能。
如果您使用java,则: https://github.com/joshdevins/rabbitmq-ha-client(它只是有点旧,但它认为它仍然有用)。
无论如何,如果你想实现你已经捕获异常的功能并在以后重试。
如果客户端失去连接,则应在重新发送消息之前重新连接客户端。
在版本3.3.0上,最后一个功能默认实现为java客户端:
java客户端
增强 如果连接,14587支持自动重新连接到服务器 中断
这一点非常重要,您希望按顺序发送消息。
一个简单的解决方案是将消息放入客户端列表中,然后仅在消息已正确发送时才从列表中删除消息。
我认为你也可以找到有趣的Publisher Acknowledgements