【发布时间】:2015-08-14 12:13:40
【问题描述】:
我在 OSGI 环境 (Karaf) 上遇到了一些关于 Camel 和 Activemq 的问题。 我希望队列中的消息在失败时会被重新传递! 但我想在重试之前延迟一下。
我找到了 org.apache.activemq.RedeliveryPolicy 类。我在我的蓝图 xml 中配置了一个具有不同属性的 bean,如下所示:
<bean id="redeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy">
<property name="initialRedeliveryDelay" value="2000" />
<property name="redeliveryDelay" value="15000" />
<property name="useExponentialBackOff" value="true" />
<property name="backOffMultiplier" value="5" />
<property name="maximumRedeliveryDelay" value="120000" />
<property name="maximumRedeliveries" value="20" />
<property name="queue" value="*" />
</bean>
当我测试此配置时,如果出现错误,队列会重试多次,它在“maximumRedeliveries”属性中配置。但是重新交付之间没有延迟。实际上 initialRedelivery 有效,但仅适用于第一次重试。我在不同的网站上搜索过,但我不是唯一遇到这些问题的人。
(Ps:我把 redeleveryPolicy Bean 放在了我的 org.apache.activemq.ActiveMQConnectionFactory 中)
感谢您的回答
(我为我的英语语法道歉)
【问题讨论】:
标签: apache-camel activemq karaf blueprint-osgi