2011-09-05 22 views
3

我們可以控制MDB中的交易重試間隔嗎?如果是這樣,請提供一個例子或指導我參考文檔。我們希望爲MDB交易設置一個3分鐘的時間間隔。期望的是,如果查詢第一次失敗,那麼它在3分鐘的時間過後重試。MDB交易重試間隔

回答

3

Vairam;

查看關於Message Redelivery的Hornet文檔。您需要考慮的問題有:

  • 重新發送延遲(您表示3分鐘)。
  • 消息應該被重新傳遞的次數。
  • 如果您選擇不重新傳遞下去,當最後一個重新交付嘗試失敗時發生的最後行動可能是:
    • 丟棄該報文。
    • 將消息排入指定的DLQ。
    • 將消息排隊到其他隊列。

設置重新傳遞延遲

延遲重新傳遞是在地址設定的配置定義的。

實施例:

<!-- delay redelivery of messages for 3m --> 
<address-setting match="jms.queue.exampleQueue"> 
    <redelivery-delay>300000</redelivery-delay> 
</address-setting> 

設置

這可以通過在地址設定配置指定DLQ配置聲明性地定義重複傳遞的最大數量和DLQ配置:

實施例:

<!-- undelivered messages in exampleQueue will be sent to the dead letter address 
    deadLetterQueue after 3 unsuccessful delivery attempts 
    --> 
<address-setting match="jms.queue.exampleQueue"> 
    <dead-letter-address>jms.queue.deadLetterQueue</dead-letter-address> 
    <max-delivery-attempts>3</max-delivery-attempts> 
</address-setting> 

如果您想在指定的重新傳送失敗次數後丟棄消息,請檢查消息頭值「JMSXDeliveryCount」,如果該數字等於最大重新傳送次數,則僅禁止任何異常並提交事務。

+0

感謝您的重播尼古拉斯。我們用hornetq使用jms。 – vairam

+0

您好,非常感謝您的回覆。有沒有任何API可以查看隊列中的消息數量。以便我們查看隊列中的消息。 – vairam