我有两个简单的控制台应用程序来集成nservicebus。一个是发布者,另一个是订阅者。在这种情况下,订户还通过Send()
从另一个web应用程序接收其他消息。当我在我的开发环境中本地运行它们时,没有问题,一切都像预期的那样工作。我可以从web应用程序发送消息,并在我的“订阅者”上接收它们,以及在我的订阅者上接收发布的消息。
但是,在部署到Server2008 R2时,订阅服务器会向发布者StatusQueue发送初始消息,其中包含以下内容:
<?xml version="1.0"?>
<Messages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.net/NServiceBus.Unicast.Transport">
<CompletionMessage>
<ErrorCode>0</ErrorCode>
</CompletionMessage>
</Messages>
我认为这只是最初的“我想订阅你发布的消息类型的消息。*”。此消息只是驻留在队列中,永远不会被发布者获取。
发布者的配置:
<MsmqSubscriptionStorageConfig
Queue="StatusQueueSubscriptions" />
<MsmqTransportConfig
InputQueue="StatusQueue"
ErrorQueue="StatusError"
NumberOfWorkerThreads="1"
MaxRetries="5"/>
订户的配置:
<MsmqTransportConfig
InputQueue="AppsInputQueue"
ErrorQueue="AppsError"
NumberOfWorkerThreads="1"
MaxRetries="5"/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Messages" Endpoint="StatusQueue"/>
</MessageEndpointMappings>
</UnicastBusConfig>
发布于 2011-10-30 04:02:07
您的订阅被忽略的可能原因是,发往发布者的传入消息与您的订阅中定义的类型不匹配。
因此,当发布服务器收到消息时,它将根据其中包含的订阅对其进行评估,不会找到任何匹配项,因此不会向订阅服务器发送任何消息。
这可能是因为NServiceBus中的消息类型不仅由程序集/类型名称定义,而且由程序集版本和公钥标记定义。
检查发布者和订阅者持有的消息程序集的版本/PK令牌,并确保它们完全匹配。
更新
好吧,这听起来像是你的输入队列上的权限在某种程度上阻止了你的发布者服务帐户读取消息。尝试将完全控制权限授予服务帐户。
另外,您是否检查了日志中的错误的默认日志位置?(C:\Users(用户名)\AppData\Local\Temp)
https://stackoverflow.com/questions/7934888
复制相似问题