nservicebus用户没有收到消息

时间:2013-07-08 23:29:46

标签: .net xml nservicebus publish-subscribe

发布者和订阅者都没有错误启动,但订阅者在我发布消息时没有响应(它应该在屏幕上打印一些内容)。请帮忙!!

订阅者app.config如下所示:

<add Messages = "Messages" Assembly = "Messages" Endpoint = "MyPublisher" />

发布商端点:

Configure.With()
    .DefaultBuilder()
    .JsonSerializer
    .DefiningEventsAs(t => t.Namespace != null && t.Namespace == "Messages")
    .MsmqSubscriptionStorage

订阅者端点:

Configure.With()
    .DefaultBuilder()
    .JsonSerializer
    .DefiningEventsAs(t => t.Namespace != null && t.Namespace == "Messages");

1 个答案:

答案 0 :(得分:2)

这里没有很多信息。但这是你可以测试的东西

  1. 您指定命名空间是“Messages”而不是其他内容。它是否正确? NServiceBus的记录应该声明它找到了消息,并且可以将这些消息映射到处理程序。所以程序集名称和命名空间都应该是“Messages”
  2. 您可以在发布服务器传入队列上启用日记功能。无论何时首次启动订阅者,它都会开始向发布者发送消息。无论!在该消息中,它表示它正在订阅某些消息。如果该消息从未到达发布者,那就是您的问题。
  3. 装配版本可能是个问题。如果发布者和订阅者具有不同版本的程序集和消息,则发布者将认为没有订阅者。
  4. 对于发布者,订阅者还需要能够将消息映射到处理程序。记录应该说明。订户也应该接收消息。通过打开日记功能验证这一点。
  5. 在一台机器上测试它。如果在远程计算机上,发布者应该在Outgoing Queues文件夹中连接到另一台计算机。在启动服务并发送订阅消息后,订户也是如此。
  6. 除非您在内存存储中使用,否则应存储订阅消息。换句话说,当使用SQL Server或RavenDB存储订阅时,订阅者的订阅(显然)应该是可见的。
  7. 如果您使用的是InMemory订阅存储空间,显然您不应该关闭发布商,否则您的订阅将会消失。如果您已关闭发布者,则订阅者需要再次发送订阅消息。这是在服务启动时自动完成的。
  8. 希望这有助于找到解决方案。