#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. Спасибо за ваш ответ. Но это не то, что мне нужно. Мне нужно установить время ожидания для сообщения в очереди назначения, чтобы, если получатель не получит сообщение в течение этого времени, оно перемещалось в очередь мертвых писем.