gpt4 book ai didi

java - Spring JMS Activemq - 设置死信队列名称(DLQ)

转载 作者:搜寻专家 更新时间:2023-10-31 19:54:02 27 4
gpt4 key购买 nike

我们有 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>

最佳答案

我认为您需要在代理上配置 deadLetterStrategy。请参阅示例 - ActiveMQ DLQ

您可以选择 individualDeadLetterStrategy 为每个队列创建一个单独的 DLQ(取决于您的目标策略)。您可以为每个项目/应用程序使用不同的前缀。这样一来,每个项目/应用程序只能有一个消费者,它使用来自所有以相应前缀开头的 DLQ 的 DLQ 消息(在创建消费者时使用通配符)。

关于java - Spring JMS Activemq - 设置死信队列名称(DLQ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32296656/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com