3

MDBでトランザクションの再試行間隔を制御できますか?その場合は、例を提供するか、ドキュメントを参照してください。MDBトランザクションに3分の時間間隔を設定します。クエリが最初に失敗した場合、3分が経過した後に再試行することが望まれます。

4

1 に答える 1

3

バイラム;

メッセージの再配信に関する 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」のメッセージ ヘッダー値を確認し、その回数が最大再配信回数と等しい場合は、例外をすべて抑制し、トランザクションをコミットします。

于 2011-09-10T17:58:57.210 に答える