Как реализовать триггеры MSMQ - PullRequest
1 голос
/ 18 октября 2011

Кто-нибудь может решить мою проблему?

Я хочу запустить одно событие, когда некоторые данные вставлены в очередь MSMQ, как я могу это сделать?

1 Ответ

4 голосов
/ 18 октября 2011

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

MessageQueue queue = new MessageQueue( @".\PRIVATE$\Queue" );
queue.BeginPeek( TimeSpan.Infinite, null, OnMessageAdded);

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

private void OnMessageAdded( IAsyncResult ar )
{
    Message peekedMessage = queue.EndPeek(ar);
    //Do whatever you want. Raise a new event, process the message, ...
}

Сообщение не удаляется из очереди.Вы можете использовать сообщение, но оно все еще остается в очереди.Поэтому, если вам не нужно сообщение, вы можете просто позвонить queue.EndPeek(ar); без использования результата.

...