【发布时间】:2025-11-24 00:15:01
【问题描述】:
我使用以下代码发送消息:
var transaction = new MessageQueueTransaction())
transaction.Begin( );
var message = new Message
{
Body = myContent,
Recoverable = true
};
m_oMessageQueue.Send( message , myTransaction );
transaction.Commit( );
并使用BeginRecieve 和ReceiveCompleted 事件处理程序接收它。
如果我的事件处理程序在调用EndRecieve 之前失败,消息是否应该保留在队列中并可供后续调用接收?我看到的行为是消息永远消失了。 (或者也许有一个超时时间之后它会再次可用?)
更新接收消息的代码如下所示。
var messageQueue = new MessageQueue( myPath );
messageQueue.ReceiveCompleted += messageQueue_ReceiveCompleted_ThrowException;
messageQueue.BeginReceive();
出于测试目的,我在 messageQueue_ReceiveCompleted_ThrowException 事件处理程序中抛出异常。
然后我用一个有效的事件处理程序重复上面的代码,但我没有被调用。
【问题讨论】:
-
你的接收队列的 EnableConnectionCache 设置是什么?
-
我什么都没设置,有什么用?
标签: c# msmq message-queue