多个端点,NServicebus vs Rhino Bus

多个端点,NServicebus vs Rhino Bus,nservicebus,rhino-commons,Nservicebus,Rhino Commons,我对NServiceBus和Rhino Bus都很陌生,我想知道多个端点是否能解决我的问题。 我希望: 1.为开票消息创建一个端点,该端点在当时仅运行1个线程 2.有另一个EDI消息端点(~读取电子数据交换的传入文件),这里也只有1个线程。 3.所有其他消息应转到具有多个线程的“默认”端点。 4.客户端不应该知道端点。他们应该只发布到“总线网关”(unicastbus?) 5.我不想按惯例注册MessagHandler。所有注册都必须在代码中显式完成 在nservice bus和rhino bu

我对NServiceBus和Rhino Bus都很陌生,我想知道多个端点是否能解决我的问题。 我希望: 1.为开票消息创建一个端点,该端点在当时仅运行1个线程 2.有另一个EDI消息端点(~读取电子数据交换的传入文件),这里也只有1个线程。 3.所有其他消息应转到具有多个线程的“默认”端点。 4.客户端不应该知道端点。他们应该只发布到“总线网关”(unicastbus?) 5.我不想按惯例注册MessagHandler。所有注册都必须在代码中显式完成

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

Lars Erik

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

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

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


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

感谢您抽出时间回答。我将尝试解释为什么我需要明确注册:

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

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

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

你可能不同意我关于显式编程和基于约定编程的观点。但在我们公司,基于约定的编程是一种反模式

关于,端点。我现在明白了。为端点(或在代码中)提供一个web.config将非常适合我们,因为从客户端到服务器的所有请求都会转到同一个“wcf网关”

(顺便说一句:我在NDC2009上看过你的节目,我想它叫“完成模式”。它真的让我大开眼界——特别是关于明确角色的部分。)


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

感谢您抽出时间回答。我将尝试解释为什么我需要明确注册:

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

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

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

你可能不同意我关于显式编程和基于约定编程的观点。但在我们公司,基于约定的编程是一种反模式

关于,端点。我现在明白了。为端点(或在代码中)提供一个web.config将非常适合我们,因为从客户端到服务器的所有请求都会转到同一个“wcf网关”

(顺便说一句:我在NDC2009上看过你的节目,我想它叫“完成模式”。它真的让我大开眼界——特别是关于明确角色的部分。)


(我必须回答我自己的问题,因为stackoverflow在注释中的字符数有限)

我添加了一条注释作为答案,因为注释中的字符数有限。请参见下面..好的-然后它就像这样:NServiceBus.Configure.With(/*来自NServiceBus程序集的所有类型*/,/*您想要加载的特定处理程序和saga类型*/);我添加了一条注释作为答案,因为注释中的字符数有限。请参见下面..好的-然后它就像这样:NServiceBus.Configure.With(/*来自NServiceBus assemblems的所有类型*/,/*您的特定处理程序和saga-ty