【发布时间】:2022-07-29 17:28:54
【问题描述】:
我正在使用带有 RabbitMQ 客户端的 Vertx 4.2.1,我只是注意到有时当 rabbitMQ 客户端断开连接并重新连接时,RabbitMQPublisher 无法再发布消息。这意味着我对 publisherClient.rxPublish(...) 的调用永远不会完成,也不会引发任何错误。
我的客户端设置是:
new RabbitMQOptions().setAutomaticRecoveryEnabled(true)
.setReconnectAttempts(0)
.setNetworkRecoveryInterval(1000L);
是否有一些设置或什么可以防止这种情况发生?
目前,我正在尝试使用以下解决方法解决此问题:
publisherClient.rxPublish(......)
.timeout(5, TimeUnit.SECONDS)
.doOnError(err -> {
if (err instanceof TimeoutException) {
LOG.warn("Publisher did not recover, so it will be restarted");
publisherClient.restart();
}
})
.retry(1L, err -> err instanceof TimeoutException)
关于这个问题的一个小更新: 这似乎是可重现的,如果我们在与 RabbitMQ 的连接断开时尝试发布消息,即使连接恢复并且一切似乎都正常,我们稍后也无法发布任何消息。对 publisherClient.rxPublish(......) 的调用永远不会完成
感谢您的帮助
【问题讨论】: