从MS消息队列接收JSON

时间:2014-09-23 16:53:24

标签: c# json msmq

我在从MS队列中读取Json格式的消息时遇到了一些麻烦。

我能够连接到队列并读取第一条消息,但在尝试访问Body属性时,该值为null。

此外,当尝试从正文流中读取时,我还有一条错误消息,指出该流不可读。

队列是事务性的,但我不认为这是相关的。

private readonly MessageQueue _queue;
private bool _listen;
private Func<object, bool> _messageHandler;

public Listener(string queuePath)
{
   _queue = new MessageQueue(queuePath);
}

public void Start(Func<object, bool> messageHandler)
{

   _listen = true;
   _queue.PeekCompleted += OnPeekCompleted;

   _messageHandler = messageHandler;

   StartListening();
}

private void StartListening()
{
   if (!_listen)
   {
      return;
   }

   try
   {
      _queue.BeginPeek();
   }
   catch (Exception ex)
   {
      Console.WriteLine("An exception occurred when peeking");
   }
}

private void OnPeekCompleted(object sender, PeekCompletedEventArgs e)
{
   _queue.EndPeek(e.AsyncResult);
   var messageId = string.Empty;

   using (var transaction = new MessageQueueTransaction())
   {
     transaction.Begin();

     try
     {
        using (var message = _queue.Receive(transaction))
        {
           if (!_listen || message == null) 
           {
               return;
           }
           messageId = message.Id;

           if (ProcessMessage(message))
           {
               transaction.Commit();
           }
           else
           {
              transaction.Abort();

           }

        }
     } 
     catch (Exception exception)
     {
        transaction.Abort();
     }
  }

  StartListening();
}

通过MSMQ发送json以检索邮件正文时,有什么特别的事吗?

非常感谢

0 个答案:

没有答案