NServiceBus中的订户发送自动订阅消息的情况

时间:2013-12-30 16:28:49

标签: c# nservicebus messaging soa publish-subscribe

我发现即使我的NSB进程没有处理DTOXXX的消息,它仍然会向DTOXXX的发布者队列发送自动订阅消息。

这不是理想的行为。我希望该过程发布和订阅DTOYYY的消息,但任何使用DTOXXX的通信都只是严格发送。

如果不够清楚我有2个包含我的DTO的程序集。我想建立一个pub / sub总线,但仅适用于YYY.dll中的程序集。对于其他程序集中的DTO,我希望通过SEND(而不是pub sub)完成通信。

我遇到的问题是NSB正在向其他进程发送自动订阅消息,即使:

  1. XXX程序集中没有DTO处理程序。它仅被引用,以便YYY NSB可以向XXX NSB发送消息。
  2. 2个模块之间的通信仅限SEND。这样做是为了促进低耦合,考虑到实际使用情况和商业要求。
  3. 如何正确设置模块?这是我需要以某种方式告诉NSB,自动订阅消息,但仅限于给定命名空间/程序集中的消息。

2 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题,首先是您可以手动启用自动订阅和订阅。这是通过端点配置中的.DoNotAutoSubscribe()完成的。从那里你将解析和IBus的实例,然后明确订阅你关心的消息。

第二种方法是将您的消息与所有其他代码分离到不同的程序集中,并仅通过app.config文件将事件(pub / sub)映射到Publisher。

答案 1 :(得分:2)

您可以通过在configure界面中实现自己的DefiningEventsAs来定义自己的规则,将消息视为命令/事件(或纯文本消息)。 Nsb只会自动订阅活动。这可能对你的用例有帮助......