Как я могу отслеживать очередь, когда приходят сообщения? - PullRequest
2 голосов
/ 07 апреля 2011

Я ищу эквивалент FileSystemWatcher для определенной очереди MSMQ. Существует ли что-то подобное или мне нужно накатить свое?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011

Разве это не то, что делает MQReceiveMessage ?Приношу свои извинения за ссылки на C документы, но все эти функции должны быть доступны для .NET.По сути, вы можете использовать эту функцию для просмотра сообщений в очереди:

При чтении сообщений вы можете либо просматривать (не удаляя их), либо получать сообщения (удаляя их) в очереди.

И вы можете использовать его для блокировки до готовности сообщения:

Обработка блокируется в соответствующем потоке, пока сообщение не будет найдено в очереди (это значение по умолчанию)настройка).

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

1 голос
/ 07 апреля 2011

Вы можете использовать триггеры MSMQ. См. MSDN здесь .

Из первого абзаца:

Триггеры очереди сообщений позволяют связывать поступление входящих сообщений в очередь назначения с функциональностью одного или нескольких компонентов COM или автономных исполняемых программ. Эти триггеры могут использоваться для определения бизнес-правил, которые могут быть вызваны при поступлении сообщения в очередь без какого-либо дополнительного программирования. Разработчики приложений больше не должны писать какой-либо инфраструктурный код для обеспечения такого рода функций обработки сообщений.

...