MSMQ Добавление задержки в сообщения - PullRequest
0 голосов
/ 01 декабря 2009

У меня есть очередь сообщений Microsoft, которая заполняется сообщениями. Если есть проблема с обработкой сообщения, я хотел бы повторить сообщение, я не хочу повторять сообщение immidiatley. Есть ли способ добавить задержку к сообщению в MSMQ, чтобы она не была доступна в течение определенного периода времени?

Другой альтернативой является создание другой очереди (очереди повторных попыток) и чтение этой очереди каждые 15 минут, но я бы не стал этого делать.

Ответы [ 2 ]

1 голос
/ 25 марта 2014

Итак, я недавно видел некоторый код, который обрабатывает это в логике исключений, код имеет встроенный шаг повтора, который пытается выполнить после задержки. Не удается, ожидает определенное количество времени, затем пытается снова.

По сути, он рекурсивно пытается определенное количество раз (удлиняя задержку каждый раз). Довольно аккуратный, нет причин иметь другую очередь. Существует множество обобщений и делегатов, используемых для выполнения методов. Не знаю, можно ли что-то подобное сделать или нет. Я подозреваю, что вы все равно захотите обработать случай, когда сообщение не может быть доставлено с другой очередью.

1 голос
/ 02 декабря 2009

Что вам нужно, так это «Обработка сообщений отравления» (даже если это не ошибка сообщения, а временная проблема среды).

Есть много статей на эту тему. Вот некоторые из них:

Обработка ядовитых сообщений в MSMQ 3.0
Обработка ядовитых сообщений в MSMQ 4.0
Выжившие ядовитые сообщения в MSMQ

Короче говоря: вы должны переместить их в очередь повторных попыток.

...