0

我对 NServiceBus 和 Rhino Bus 都很陌生——我想知道多个端点是否能解决我的问题。我想要以下内容: 1. 有一个用于发票消息的端点,当时只运行1 个线程2. 有另一个用于 EDI 消息的端点(~为电子数据交互读取传入文件),这里也只有1 个线程。3. 所有其他消息应发送到具有多个线程的“默认”端点。4. 客户端不应该知道端点。他们应该只发布到“总线网关”(单播总线?) 5. 我不想按照惯例注册消息处理程序。所有注册都必须在代码中显式完成。

这可以在 nservice bus 和 rhino bus 中做到吗?谁能给我例子?

4

2 回答 2

2

拉斯-埃里克,

在 NServiceBus 中,您需要配置客户端以将适当的消息发送到相关端点。“总线”不是每个人都与之交谈的中央物理端点(否则它将是一个代理)。

关于注册消息处理程序,NServiceBus 会自动执行此操作。你能解释一下为什么你需要手动注册它们吗?话虽如此,如果您确实想自己注册它们,您可以 - 在调用 NServiceBus.Configure.With() 之前,然后显式传入您希望 NServiceBus 扫描的程序集或类型(至少,传入 NServiceBus 程序集因为有消息处理程序和其他需要加载 NServiceBus 才能工作的东西)。

于 2010-08-31T03:26:14.740 回答
1

感谢您花时间回答。我将尝试解释我为什么要显式注册:

1. 我们的软件有一组默认的 MessageHandlers。通常,我们需要为客户进行“表面”定制。在服务总线中,这种定制实际上意味着用定制的消息处理程序替换默认的消息处理程序。这是在服务器端的引导程序中完成的。如果 NSB 只是扫描程序集以查找适当的处理程序,则存在两个处理程序将针对同一消息注册的风险。

2. 我想在编译时 100% 确定引导程序实际上注册了正确的响应处理程序。我将通过常规的单元测试来实现这一点——蚂蚁依赖于一个假的总线实例。

3. 我们只是不喜欢在我们公司按惯例编程。基于约定的编程使事情变得难以理解,尤其是对于新开发人员。这有点像“魔法在这里发生”。

您可能不同意我对基于显式与基于约定的编程的看法。但在我们公司,基于约定的编程是一种反模式。

关于,端点。我现在明白了。拥有一个用于端点(或代码)的 web.config 将非常适合我们 - 因为从客户端到服务器的所有请求无论如何都会转到相同的“wcf-gateway”。

(顺便说一句:我在 NDC2009 上看过你,我认为它被称为“使模式完整”。这真的让我大开眼界——尤其是关于明确角色的部分。)

(我不得不回答我自己的问题,因为 stackoverflow 在评论中的字符数量有限)

于 2010-09-01T06:50:15.920 回答