簡體   English   中英

Spring JMS Activemq - 設置死信隊列名稱(DLQ)

[英]Spring JMS Activemq - set dead letter queue-name (DLQ)

我們有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消息,從相應的前綴開始(在創建消費者時使用通配符)。

您可以轉到Apache ActiveMQ文件夾。 在那里你將獲得/ config文件夾中的activemq.xml。
將此代碼添加到activemq.xml文件中的<broker>標記下

 <destinationPolicy>
            <policyMap>
              <policyEntries>                          
                <policyEntry queue=">">
                  <deadLetterStrategy>
                    <individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true"/>
                  </deadLetterStrategy>
                </policyEntry>
              </policyEntries>
          </policyMap>
 </destinationPolicy>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM