Задержка вызова очереди сообщений?

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

IE:

В момент времени 0 сообщение A отправляется в очередь с задержкой в ​​15 минут. Через 5 минут Сообщение B отправляется в очередь с задержкой в ​​10 минут. Служба, обрабатывающая очередь, аварийно завершает работу и не перезапускается в течение еще 15 минут. Когда очередь снова начнет обрабатываться, сообщение B будет сверху, а затем сообщение A.

Есть ли что-нибудь подобное в экосистеме C# / MSMQ / .NET?

2 ответа

Решение

Если вы занимаетесь облачным программированием в Windows Azure, есть способ справиться с этим. Просто укажите visibilitytimeout поставить сообщение.

С http://msdn.microsoft.com/en-us/library/windowsazure/dd179346.aspx:

VisibilityTimeout=

Необязательный. Если указано, запрос должен быть выполнен с использованием x-ms-версии 2011-08-18 или новее. Если не указан, значение по умолчанию равно 0. Указывает новое значение времени ожидания видимости в секундах относительно времени сервера. Новое значение должно быть больше или равно 0 и не может превышать 7 дней. Тайм-аут видимости сообщения не может быть установлен в значение позже, чем время истечения. Параметр visibilitytimeout должен быть установлен на значение, меньшее значения времени жизни.

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

Одним из решений является использование другого сервиса для планирования сообщений. Мы используем службу Windows, используя Quartz API и выражения Cron для планирования заданий.

  1. Наше веб-приложение отправляет сообщение через IBM MQ в службу планировщика, чтобы запланировать задание.

  2. Когда задание запускается, оно отправляет другое сообщение в соответствующую тему/очередь.

Другие вопросы по тегам