只是想确认如何向远程事务消息队列发送消息。
假设我有两台机器,A和B.
计算机A具有用于接收消息的事务性队列。 Windows服务监视此队列并对数据执行某些操作(将其保留到SQL Server)。 机器B正在运行需要写入机器A上队列的应用程序。
几个问题:
发送邮件时,是否在机器B上创建本地副本,然后才将其传送到机器A?
一个。如果是这样,默认情况下是这种行为,还是仅在发送“IsRecoverable”属性时发生?
湾队列是事务性的这一事实是否会对此行为产生影响?
由于我使用的是事务性队列,因此一旦事务提交,数据在哪里? 一个。它是否位于本地,等待msmq服务将消息传递到远程队列? 湾或者消息是否位于远程计算机上的队列中?
我在解释文档方面遇到了麻烦。在某些地方,我看到描述了存储和转发行为,但我无法理解这是否是事务队列的默认行为,或者我是否需要明确地做一些事情来实现这一点。
答案 0 :(得分:6)
了解事务性MSMQ的主要事实是,在将消息事务传输到远程队列时实际上涉及3个不同的事务。
所以回答你的问题:
发送消息时,之前是在机器B上创建的本地副本 它被送到机器A?
是
如果是这样,默认情况下是这种行为,还是只发生在 “IsRecoverable”属性是否已发送?
默认情况下。这就是所谓的store and forward。
队列是否是事务性的事实对此有任何影响 行为?
除了失败时没有。
由于我使用的是事务性队列,因此数据位于何处 交易提交?
这取决于您的意思(见上文)
它是否在本地,等待msmq服务提供 消息到远程队列?
仅当远程队列不可用时。
或者消息是否位于远程计算机上的队列中?
如果接收方服务未能成功处理消息(处理程序中存在异常),则消息将保留在远程队列中。