我对NServiceBus和Rhino Bus都很陌生 - 我想知道多个端点是否能解决我的问题。 我想要以下内容: 1.拥有帐单结算信息的终端,当时仅运行 1个帖子 2.有另一个EDI消息端点(〜读取电子数据交换的传入文件),这里也只有 1个线程。 3.所有其他消息应该使用多个线程进入“默认”端点。 4.客户不应该知道端点。他们应该发布到“总线网关”(单播总线?) 我不想按惯例登记消息。所有注册都必须在代码中明确完成。
这可以在nservice bus和rhino bus中完成吗? 谁能举个例子?
答案 0 :(得分:2)
拉斯 - 埃里克
在NServiceBus中,您需要配置客户端以将相应的消息发送到相关的端点。 “总线”不是不是每个人都在谈论的中心物理终点(否则它本来就是经纪人)。
关于注册消息处理程序,NServiceBus会自动执行此操作。你能解释一下为什么需要手动注册它们吗?话虽这么说,如果你想自己注册,你可以 - 在调用NServiceBus.Configure.With()之前,然后显式传入你想要NServiceBus扫描的程序集或类型(至少传入NServiceBus程序集)因为有消息处理程序和其他需要加载以使NServiceBus工作的东西。)
答案 1 :(得分:1)
感谢您抽出宝贵时间回答。我将尝试解释为什么我要明确注册:
1.我们的软件有一组默认的MessageHandler。通常,我们需要为客户进行“表面”定制。在servicebus中,这种自定义实际上意味着用自定义的MessageHandler替换默认的MessageHandler。这是在服务器端的引导程序中完成的。
如果NSB只扫描组件以寻找合适的处理程序,则存在两个处理程序将针对同一消息进行注册的风险。
2.我希望在编译时100%确定引导程序实际注册了正确的Responsehandler。我将通过常规单元测试来实现这一点 - 蚂蚁依赖于公共汽车的假实例。
我们只是不喜欢我们公司的惯例编程。基于约定的编程使得难以理解,特别是对于新开发人员。这有点像“魔术在这里发生”。
您可能不同意我关于显式与基于约定的编程。但在我们公司,基于常规的编程是一种反模式。
关于,端点。我现在明白了。为端点(或代码)提供web.config将非常适合我们 - 因为从客户端到服务器的所有请求都会转到相同的“wcf-gateway”。
(顺便说一下:我在NDC2009上观看了你,“让模式完成”我觉得它已经被调用了。这对我来说真是让人大开眼界 - 特别是关于明确角色的部分。)
(我必须回答我自己的问题,因为stackoverflow在评论中的字符数量有限)