首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么nservicebus忽略我的订阅消息?

为什么nservicebus忽略我的订阅消息?
EN

Stack Overflow用户
提问于 2011-10-29 05:02:31
回答 1查看 1.6K关注 0票数 2

我有两个简单的控制台应用程序来集成nservicebus。一个是发布者,另一个是订阅者。在这种情况下,订户还通过Send()从另一个web应用程序接收其他消息。当我在我的开发环境中本地运行它们时,没有问题,一切都像预期的那样工作。我可以从web应用程序发送消息,并在我的“订阅者”上接收它们,以及在我的订阅者上接收发布的消息。

但是,在部署到Server2008 R2时,订阅服务器会向发布者StatusQueue发送初始消息,其中包含以下内容:

代码语言:javascript
运行
复制
<?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>

我认为这只是最初的“我想订阅你发布的消息类型的消息。*”。此消息只是驻留在队列中,永远不会被发布者获取。

发布者的配置:

代码语言:javascript
运行
复制
<MsmqSubscriptionStorageConfig 
    Queue="StatusQueueSubscriptions" />

    <MsmqTransportConfig
        InputQueue="StatusQueue"
        ErrorQueue="StatusError"
        NumberOfWorkerThreads="1"
        MaxRetries="5"/>

订户的配置:

代码语言:javascript
运行
复制
<MsmqTransportConfig
    InputQueue="AppsInputQueue"
    ErrorQueue="AppsError"
    NumberOfWorkerThreads="1"
    MaxRetries="5"/>

  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="Messages" Endpoint="StatusQueue"/>
    </MessageEndpointMappings>
  </UnicastBusConfig>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-30 04:02:07

您的订阅被忽略的可能原因是,发往发布者的传入消息与您的订阅中定义的类型不匹配。

因此,当发布服务器收到消息时,它将根据其中包含的订阅对其进行评估,不会找到任何匹配项,因此不会向订阅服务器发送任何消息。

这可能是因为NServiceBus中的消息类型不仅由程序集/类型名称定义,而且由程序集版本和公钥标记定义。

检查发布者和订阅者持有的消息程序集的版本/PK令牌,并确保它们完全匹配。

更新

好吧,这听起来像是你的输入队列上的权限在某种程度上阻止了你的发布者服务帐户读取消息。尝试将完全控制权限授予服务帐户。

另外,您是否检查了日志中的错误的默认日志位置?(C:\Users(用户名)\AppData\Local\Temp)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7934888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档