ActiveMQ-死信配置項及丟棄和重新消費

phs999發表於2021-01-02

https://blog.csdn.net/z69183787/article/details/88534988

當對訊息設定存活過期時間時,訊息超過時間仍然未被消費,則會自動移動到死信佇列中。DLQ-死信佇列(Dead Letter Queue)用來儲存處理失敗或者過期的訊息。

producer.setTimeToLive(1);//設定訊息的存活時間
		producer.send(message);

 

預設的佇列名稱為ActiveMQ.DLQ ,也可以通過修改配置檔案指定。

修改死信佇列名稱

<policyEntry queue="f" prioritizedMessages="true" >
                <deadLetterStrategy> 
​
                    <individualDeadLetterStrategy   queuePrefix="DLxxQ." useQueueForQueueMessages="true" /> 
​
                </deadLetterStrategy> 
              </policyEntry>

useQueueForQueueMessages: 設定使用佇列儲存死信,還可以設定useQueueForTopicMessages,使用Topic來儲存死信

預設只有持久化的訊息才可能進死信佇列,如果要非持久化的訊息也可以進入死信佇列,可以通過修改配置檔案實現。

讓非持久化的訊息也進入死信佇列processNonPersistent="true"

  <individualDeadLetterStrategy   queuePrefix="DLxxQ." useQueueForQueueMessages="true"  processNonPersistent="true" /> 

 

過期訊息不進死信佇列

<individualDeadLetterStrategy   processExpired="false"  /> 

以上提到的配置可以實現死信丟棄,即不保留。

 

當然,消費端可以通過直接指定死信佇列的名稱,進行再次消費。

Queue queue = session.createQueue("ActiveMQ.DLQ");

 

 

相關文章