如果有新消息,MSMQ可以引发事件

时间:2012-08-03 13:26:06

标签: c#-4.0 msmq

作为不断轮询现有Microsoft Messaging Queue的替代方法,我想知道MSMQ是否可以提出某种类型的事件/通知,让应用程序知道消息可用?

2 个答案:

答案 0 :(得分:1)

MessageQueue通知不佳,并且没有邮件到达通知(请参阅MessageQueue Class

您可以自己实施通知。这是一个很好的实现(参见A simple MSMQ Listener helper class

答案 1 :(得分:1)

我知道这是一个老问题但是来到这里寻找在队列中收到消息时遇到的事件。这是我做的:

   private static MessageQueue _messageQueue = null;
    static void Main(string[] args)
    {

        if (MessageQueue.Exists(@".\Private$\orders"))
        {
            _messageQueue = new MessageQueue(@".\Private$\orders") {Label = "Testing Queue"};
        }


        _messageQueue.ReceiveCompleted += new ReceiveCompletedEventHandler(OnMessageRecieved);
        _messageQueue.BeginReceive();

        Console.ReadLine();

    }

    private static void OnMessageRecieved(object sender, ReceiveCompletedEventArgs e)
    {
        //Process your message here. 
        _messageQueue.BeginReceive();
    }