Java Spring JMS Activemq-设置死信队列名称(DLQ)
我们有3个不同的项目运行在同一个ACTIVEMQ代理上。 目前只有一个“DLQ”队列,我们希望为每个web应用程序设置DLQ,如下所示:Java Spring JMS Activemq-设置死信队列名称(DLQ),java,spring,jms,activemq,Java,Spring,Jms,Activemq,我们有3个不同的项目运行在同一个ACTIVEMQ代理上。 目前只有一个“DLQ”队列,我们希望为每个web应用程序设置DLQ,如下所示: dlq_webapp1 dlq_webapp2 dlq_webapp3 这样我们就可以更好地控制重试流。我们如何将其配置为这样?以下是我们的一些消息传递bean: <bean id="redeliveryConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory
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>
我认为您需要在代理上配置
死信策略。请参阅以下的例子:
您可以选择individualDeadLetterStrategy
,它为每个队列创建单独的DLQ(取决于您的目的地策略)。您可以为每个项目/应用程序使用不同的前缀。因此,每个项目/应用程序只能有一个使用者,该使用者使用来自以各自前缀开头的所有DLQ的DLQ消息(在创建使用者时使用通配符)。您可以转到Apache ActiveMQ文件夹。在那里,您将在/config文件夹中获得activemq.xml。
在activemq.xml文件的
标记下添加此代码
您有没有这样的例子?XML配置似乎暗示了activemq的conf目录中的activemq.XML。仍在查看如何在Camel中以编程方式执行此操作。是否可以为主题策略设置带有clientId的queuePrefix?以便为多个消费者分离出DLQ消息。
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">">
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true"/>
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>