Spring 我可以为JMSTemplate生产者定义固定退避策略吗
如果代理关闭/无法访问,SpringJMS生产者应在重试之前等待一段可配置的时间。 是否可以在DefaultMessageListenerContainers中提供类似FixedBackOff的配置 问题是,我看到我的生产者正在无限制地尝试连接到ActiveMQ代理,但生产者连接没有有效的证书链,并抛出SSL错误。此连接重试不会中断,并在几秒钟内生成大量日志条目。 这只是一个SSL不正确的场景,但在生产中,代理被关闭以进行维护,然后生产商应在连接重试之间等待 或者,是否有一种方法可以在发布消息之前检查JMS生产者连接状态Spring 我可以为JMSTemplate生产者定义固定退避策略吗,spring,jms,spring-integration,Spring,Jms,Spring Integration,如果代理关闭/无法访问,SpringJMS生产者应在重试之前等待一段可配置的时间。 是否可以在DefaultMessageListenerContainers中提供类似FixedBackOff的配置 问题是,我看到我的生产者正在无限制地尝试连接到ActiveMQ代理,但生产者连接没有有效的证书链,并抛出SSL错误。此连接重试不会中断,并在几秒钟内生成大量日志条目。 这只是一个SSL不正确的场景,但在生产中,代理被关闭以进行维护,然后生产商应在连接重试之间等待 或者,是否有一种方法可以在发布消息之
环境:SpringJMS。ActiveMQ确实在DefaultMessageListenerContainer上有一个选项可供配置:
/**
* Specify the {@link BackOff} instance to use to compute the interval
* between recovery attempts. If the {@link BackOffExecution} implementation
* returns {@link BackOffExecution#STOP}, this listener container will not further
* attempt to recover.
* <p>The {@link #setRecoveryInterval(long) recovery interval} is ignored
* when this property is set.
* @since 4.1
*/
public void setBackOff(BackOff backOff) {
this.backOff = backOff;
}
Long.MAX_VALUE参数表示最大尝试次数
更新
如果我们讨论的是JmsTemplate,那么重试逻辑必须从客户机代码的角度进行。这是一个被动组件,并没有任何后台线程像DefaultMessageListenerContainer那个样执行某些工作
对于基于客户端的重试,我们建议一个项目。要配置RetryTemplate和RetryPolicy。然后用RetryTemplate.execute包装器调用JmsTemplate,任何错误都将根据策略重试。谢谢。我正在寻找JmsTemplet连接中的回退。DMLC中没有。请参阅我答案中的更新。
private BackOff backOff = new FixedBackOff(DEFAULT_RECOVERY_INTERVAL, Long.MAX_VALUE);