如何设置rebus来处理来自第三方供应商的消息

时间:2018-03-23 20:46:13

标签: rebus

我们目前使用Rebus,我们有一个共享项目,其中包含命令消息(有效负载等)。

客户端和总线项目都引用了这个共享的消息"项目。当客户端向总线发送消息时,总线知道如何处理它,因为它引用了相同的命名空间:

为了说明,我们有3个项目:

  • project.rebus.bus
  • project.rebus.messages(命令消息)
  • project.rebus.client

Solution1 - bus

  • project.rebus.bus PingHandler<Ping>
  • project.rebus.messages(Ping消息)

Solution2 - 客户端

  • project.rebus.client bus.send(new Ping {...})
  • project.rebus.messages(Ping消息)

该方案有效,因为 project.rebus.bus project.rebus.client 共享相同的 project.rebus.messages ,所有好。

我们如何设置 project.rebus.bus ,当它需要处理来自第三方供应商的消息时,我们无法拥有共享的 project.rebus.messages 项目?

有可能吗?

实施例

我们的rebus巴士巴士

  • project.rebus.bus ThirdPartyTestHandler<ThirdPartyTestMessage>
  • project.rebus.messages(ThirdPartyTestMessage message)

第三方供应商 - 客户

  • SomeCompanyOutThere.rebus.client bus.send(new ThirdPartyTestMessage {...})
  • SomeCompanyOutThere.rebus.messages(ThirdPartyTestMessage message)

谢谢!

1 个答案:

答案 0 :(得分:1)

通常会看到消息程序集作为NuGet包分发的项目。

这样,消息类型的“所有者”(例如,如果是命令,我们正在讨论的应用程序与处理程序,或者如果我们正在讨论的事件发布事件的应用程序)可以具有在其解决方案中进行项目,然后可以从中构建NuGet包。

然后,所有其他应用程序(在此特定关系中成为“客户”)可以包含该NuGet包,这样就可以访问消息类型。

如果您打算将其用作消息,我建议您对第三方程序集执行相同的操作。