NServiceBus PubSub-如何打破pub\'r和sub\'r之间的二进制依赖关系?

问题描述

| 我需要构建一个NSB订阅服务器,该订阅服务器将订阅由已启用的服务发布的消息。此服务是使用包含我要订阅的NSB IMessage实现的消息程序集构建的。因此,要建立我的订户,我需要对该程序集有严格的依赖性。 当我的订阅者启动时,它将一些消息发送到发布者输入队列,这导致发布者将我的订阅记录在数据库中。我的订阅之一如下所示:
MyNamespace.MyMessageType,MyNamespace,Version=1.0.0.0,Culture=neutral,PublicKeyToken=MyPublicKeyToken
不幸的是,发布者正在从名称不强的程序集中发布消息。因此,在发布时,订阅评估过程无法针对我的订阅成功评估,因为正在发布的消息的公钥令牌(值= null)与我的订阅不匹配。 我的问题是:我不能仅按类型和版本订阅消息吗?更好的是-我不能基于某些外部合同(例如XSD)订阅消息并完全打破这种依赖性吗? 提前谢谢了。 更新:NSB文档在此处提示如下内容: http://www.nservicebus.com/MessagesAsInterfaces.aspx     

解决方法

对于您创建的常规消息,可以使用NSB工具目录中的XsdGenerator工具生成可传递给其他端点的模式。您将要使用此工具而不是.NET Framework工具,因为它不支持接口。从那里您可以使用该架构来处理消息。 对于订阅消息,如果您不想使用该程序集,则可以告诉NSB DoNotAutoSubscribe()并手动订阅(Bus.Subscribe(Type)),并根据需要传递消息的类型。这可能不在架构或其他配置上。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...