我们目前使用Rebus,我们有一个共享项目,其中包含命令消息(有效负载等)。
客户端和总线项目都引用了这个共享的消息"项目。当客户端向总线发送消息时,总线知道如何处理它,因为它引用了相同的命名空间:
为了说明,我们有3个项目:
Solution1 - bus
PingHandler<Ping>
Solution2 - 客户端
bus.send(new Ping {...})
该方案有效,因为 project.rebus.bus 和 project.rebus.client 共享相同的 project.rebus.messages ,所有好。
我们如何设置 project.rebus.bus ,当它需要处理来自第三方供应商的消息时,我们无法拥有共享的 project.rebus.messages 项目?
有可能吗?
实施例
我们的rebus巴士巴士
ThirdPartyTestHandler<ThirdPartyTestMessage>
第三方供应商 - 客户
bus.send(new ThirdPartyTestMessage {...})
谢谢!
答案 0 :(得分:1)
通常会看到消息程序集作为NuGet包分发的项目。
这样,消息类型的“所有者”(例如,如果是命令,我们正在讨论的应用程序与处理程序,或者如果我们正在讨论的事件发布事件的应用程序)可以具有在其解决方案中进行项目,然后可以从中构建NuGet包。
然后,所有其他应用程序(在此特定关系中成为“客户”)可以包含该NuGet包,这样就可以访问消息类型。
如果您打算将其用作消息,我建议您对第三方程序集执行相同的操作。