Как настроить время ожидания сообщения в MSMQ?

#msmq

#msmq

Вопрос:

Кто-нибудь знает, возможно ли настроить время ожидания сообщения в MSMQ? Так что сообщения перемещаются в очередь мертвых писем по истечении времени ожидания. Я знаю, что есть какое-то значение по умолчанию, но я не знаю, где оно находится и как его изменить.

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

Я нашел параметр LongLiveTime в реестре (HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSMQ/Parameters/MachineCache/), для которого по умолчанию установлено значение 345600 (секунды? = 4 дня). Я изменил это значение на 30 (секунды) и перезапустил компьютер, но это не сработало. Более того, это значение было автоматически возвращено обратно к 345600.

Можно ли это сделать?

Спасибо

Ответ №1:

Чтобы задать время достижения очереди (TTRQ) для сервера, см. Установите время жизни сообщений по умолчанию:

Вы можете использовать эту процедуру, чтобы установить время жизни по умолчанию для сообщений, стоящих в очереди сообщений. Время жизни сообщения, стоящего в очереди сообщений, определяет максимальный интервал времени, в течение которого сообщение достигает очереди назначения. Если этот интервал времени превышен до того, как сообщение достигнет очереди назначения, то сообщение помещается в очередь ожидания, если для свойства PROPID_M_JOURNAL сообщения установлено значение MQMSG_DEADLETTER.

Членство в Domain Users или эквивалент — это минимум, необходимый для завершения этой процедуры.

Чтобы установить время жизни по умолчанию для сообщений, стоящих в очереди сообщений:

Нажмите «Пуск», выберите «Программы», «Средства администрирования», а затем выберите «Сайты и службы Active Directory».

В меню «Вид» выберите «Показать узел служб».

В дереве консоли щелкните правой кнопкой мыши MsmqServices.

Где? — Сайты и службы Active Directory/Services/MsmqServices

Нажмите Свойства.

На странице Общие введите новое значение и выберите новые единицы измерения по мере необходимости.

Редактировать:

Единственный способ установить TTBR — Время получения — это при отправке сообщения, поскольку оно включает время, необходимое для сообщения, чтобы достичь очереди назначения:

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

Комментарии:

1. Спасибо за ваш ответ. Но это не то, что мне нужно. Мне нужно установить время ожидания для сообщения в очереди назначения, чтобы, если получатель не получит сообщение в течение этого времени, оно перемещалось в очередь мертвых писем.