Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring AMQP返回回调与重试回调_Java_Spring_Spring Amqp - Fatal编程技术网

Java Spring AMQP返回回调与重试回调

Java Spring AMQP返回回调与重试回调,java,spring,spring-amqp,Java,Spring,Spring Amqp,我想让我的应用程序能够适应向rabbitmq发送消息时可能出现的连接问题。我希望获得所有未发送的消息,存储它们,并在rabbitmq可用时发送它们 看着官方的报告,我没能弄清楚返回回调和重试回调之间的区别。我知道重试回调是在重试模板耗尽配置的策略时调用的,但由于上下文本身不包含消息,所以我觉得这并没有多大用处。 基于在ReturnCallback接口的“returnedMessage”方法中传递的“replyCode”,可以很容易地确定进一步的行为,但还没有弄清楚何时调用此回调 一种方法是Con

我想让我的应用程序能够适应向rabbitmq发送消息时可能出现的连接问题。我希望获得所有未发送的消息,存储它们,并在rabbitmq可用时发送它们

看着官方的报告,我没能弄清楚返回回调和重试回调之间的区别。我知道重试回调是在重试模板耗尽配置的策略时调用的,但由于上下文本身不包含消息,所以我觉得这并没有多大用处。 基于在ReturnCallback接口的“returnedMessage”方法中传递的“replyCode”,可以很容易地确定进一步的行为,但还没有弄清楚何时调用此回调

一种方法是ConfirmCallback,但存在一个问题,即使用额外的逻辑来保持同步CorrelationData和消息以及这些消息的状态


因此……除了ConfirmCallback接口之外,还有什么更简单的方法可以跟踪未使用Spring AMQP通过RabbitMQ成功发送的消息吗?

返回是在代理返回消息时,因为消息无法传递(消息发布到的交换上没有匹配的绑定,并且设置了强制位)

当代理将ack发送回发布服务器时进行确认,指示消息已成功路由


重试在代理领域之外,因此它可能是您的用例所需要的。

感谢您的快速响应。如果“重试”是一种方法,那么有没有任何例子可以说明如何获取消息本身,因为我得到的只是上下文映射中的策略本身?在上面提到的文档中,您可以提取消息本身,但在我的代码中没有发现这种情况。如本文所述,默认情况下,消息在
RetryContext
中不作为值提供,但您可以使用外部
RetryTemplate
而不是
RabbitTemplate
中配置的模板。我认为我们应该继续前进,并在上下文中以一个众所周知的键提供该消息。请打开一个,我们将进行查看,但是外部重试模板应该适合您。