Интервал повторения транзакции MDB - PullRequest
3 голосов
/ 05 сентября 2011

Можем ли мы контролировать интервал повторных транзакций в MDB? Если да, приведите пример или направьте меня к документации. Мы хотим установить интервал времени 3 мин для транзакций MDB. Желание состоит в том, чтобы, если запрос не удался \ в первый раз, то он повторяется через 3 минуты.

1 Ответ

3 голосов
/ 10 сентября 2011

Vairam;

Посмотрите документацию Hornet для Отправка сообщений . Вопросы, которые вы должны рассмотреть:

  • Задержка доставки (вы указали 3 минуты).
  • Количество раз, когда сообщение должно быть доставлено.
  • Если вы выберете , а не для повторной доставки на неопределенный срок, последнее действие, которое происходит при неудачной последней попытке повторной доставки, может быть:
    • Оставьте сообщение.
    • Поместить сообщение в назначенный DLQ.
    • Поместить сообщение в другую очередь.

Настройка задержки доставки

Задержка доставки определяется в конфигурации настройки адреса.

Пример: * * тысяча тридцать-один

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

Настройка максимального количества доставок и конфигурация DLQ

Это можно определить декларативно, указав конфигурацию DLQ в конфигурации настройки адреса:

* +1039 * Пример:
 <!-- 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" и, если это число равно максимальному числу повторных доставок, просто подавьте все исключения и подтвердите сделка.

...