2013-03-27 74 views
3

我曾尝试使用NServiceBus版本3接收来自远程客户端计算机发送到MSMQ队列中的消息。客户端与目标队列所在的机器位于同一个域中。后一台机器运行Windows Server 2008 R2(MSMQ版本5.0)作为操作系统。考虑到NServiceBus文档,我以“QueueName @ MachineName”的形式指定了端点名称。但是,邮件未被发送到指定队列。似乎“MessageQueue”类的“Transactional”属性导致了问题。所以我绕过了访问NServiceBus源代码中的属性。其结果消息被成功发送,但已收到无应答消息在客户端。更确切地说,当我查看服务器管理器窗口上的消息信息时,响应队列的名称是空的。 只有在远程发送消息时才会发生这种情况。看来我已经错误地设置了一些配置。我想知道我需要提供什么配置信息才能使NServiceBus在上述环境中工作。此外,是否有一个示例项目演示了如何使用NServiceBus将消息发送到远程队列并接收相应的答复消息。如何配置NServiceBus以使用远程MSMQ队列?

+0

你试图做一个远程接收?如果是这样,NSB只接收来自本地队列。 – 2013-03-27 17:46:13

+0

不,我只想远程发送消息(即将它们发送到远程队列)。事实上,接收是由NServiceBus在本地完成的,并且预计将发送一条新消息来响应收到的消息。 – 2013-03-30 07:16:09

回答

3

如果配置了客户端过程仅发送端点,那么将不包括在其发送,这意味着服务器将无法响应消息的返回地址。话虽如此,我不认为这是你的问题。

你应该尝试运行带有NServiceBus在你的机器,看看它是否工作正常全双工样品。如果没有,那意味着你需要更正那些机器上的更深的安装问题。

+0

非常感谢您的回复。我尝试了“FullDuplex”示例,同样的问题仍然存在。更具体地讲,它抛出,上面写着'无法格式名独立名翻译例外:PRIVATE = b95d7982-6157-462e-9c6c-15275ecc214f \ 00000088'。后跟队列号的GUID确实指向响应队列所在的客户端机器。但是,似乎获取响应队列的QueueName属性时存在问题。异常发生在'NServiceBus.Utils.MsmqUtilities.GetIndependentAddressForQueue(MessageQueue q)'方法中。 – 2013-03-30 11:43:29

+2

那么很可能你的MSMQ安装不好。最有可能的是,您已启用Active Directory集成,并且需要关闭。 – 2013-04-02 20:51:38

+0

非常感谢Udi,感谢您的帮助和关心。禁用“目录服务集成”后,系统现在按预期工作。 – 2013-04-06 11:42:29

相关问题