我们有3个不同的项目在同一个ACTIVEMQ代理上运行。 目前有一个“DLQ”队列,我们想为每个Web应用程序设置dlq,如下所示:
dlq_webapp1
dlq_webapp2
dlq_webapp3
这样我们就可以更好地控制重试流程。我们如何配置它是这样的?这是我们的一些消息传递bean:
<bean id="redeliveryConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="${activemq_url}" />
<property name="redeliveryPolicy" ref="redeliveryPolicy" />
<property name="nonBlockingRedelivery" value="true" />
</bean>
<bean id="redeliveryCachingConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory"
p:targetConnectionFactory-ref="redeliveryConnectionFactory"
p:sessionCacheSize="10" />
<!-- Redelivery: retry after 3sec, 6sec,9sec,12sec,15sec finally put in
DLQ -->
<bean id="redeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy">
<property name="queue" value="*" />
<property name="initialRedeliveryDelay" value="0" />
<property name="redeliveryDelay" value="3000" />
<property name="maximumRedeliveryDelay" value="3600000" />
<property name="maximumRedeliveries" value="5" />
<property name="useExponentialBackOff" value="true" />
<property name="backOffMultiplier" value="1" />
</bean>
<!-- A JmsTemplate instance that uses the cached connection and destination -->
<bean id="redeliveryJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="redeliveryCachingConnectionFactory" />
<property name="messageConverter" ref="eventConverter" />
<property name="sessionTransacted" value="true" />
</bean>
答案 0 :(得分:4)
我认为您需要在代理处配置deadLetterStrategy
。请参阅 - ActiveMQ DLQ
您可以选择为每个队列创建单独DLQ的individualDeadLetterStrategy
(取决于您的目标政策)。您可以为每个项目/应用程序使用不同的前缀。这样每个项目/应用程序只能有一个消费者使用来自所有DLQ的DLQ消息,从相应的前缀开始(在创建消费者时使用通配符)。
答案 1 :(得分:2)
您可以转到Apache ActiveMQ文件夹。你会在/ config文件夹中获得activemq.xml
在activemq.xml文件的<broker>
标记下添加此代码
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">">
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true"/>
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>