MSMQ:How 交易中发送消息能知道消息是否到达目的地吗?

MSMQ:How can i know whether the message has reach the destination when send messages in a transaction?

我有两台机器A和B,A用于发送消息,B用于接收消息。 现在,我关闭 B,所以 A 发出的消息存储在传出 queue.My 问题是:

1.As一个开发者,我怎么知道消息已经到达B?(当B不可用时,发送消息的应用程序照常退出,没有抛出异常)

2.How 当 B 启动时重新发送传出队列中的消息?

从理论上讲,MSMQ 是一种以异步方式发送消息的技术,更重要的是,以断开连接的方式发送消息(接收方可能尚未连接到系统)。

发件人,如果没有收到MessageQueueException (https://msdn.microsoft.com/en-us/library/system.messaging.messagequeueexception(v=vs.110).aspx)则可以认为消息发送成功。如果你真的想在 "real time" 中看到 B 是否收到了来自 A 的消息,你应该依赖其他通信技术(直接 TCP 连接或包装 TCP 通信通道的东西,例如 .NET Remoting 或 WCF) .

正如我所说,B 可能还没有在线或已经关闭,无论什么原因......所以对于你的第二个问题,我可以告诉你你没有任何问题,因为每当 B 重新启动时,它应该在你的队列上再次调用 "Receive"(使 A 发送的任何消息出队)。

阅读以下内容link:http://www.primaryobjects.com/2007/08/13/using-the-microsoft-message-queue-msmq-and-c-asp-net/我觉得很有帮助。

"As a developer, how can I know the message has reach B?"

日记是你所需要的。 Writing in MSMQ's personal journal

"How to resend the message in outgoing queue when B is start?"

传出队列中的消息传递由 MSMQ 负责。您无需重新发送。等待目的地上线。