我在从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以检索邮件正文时,有什么特别的事吗?
非常感谢