一个EndPoint的一个NServiceBus.Host,推荐的方法是什么

时间:2014-10-16 14:36:39

标签: .net msmq nservicebus esb nservicebus4

我试图通过在线文档了解NServiceBus。我无法解决的问题是整体建议的基础设施设置。 我们的应用程序应该能够运行单个机器和多个(逻辑上不同的)站点(n个商店 - 1个总部)。 至于NServiceBus(我通过NuGet使用v5),我不完全理解主机和端点的概念。

假设我们有15项服务(订单服务,项目服务等)。

  1. 我需要15个客户端(15个类库项目,代码通过总线发送消息),15个服务器(一个或多个接收消息处理程序类)处理特定于服务的消息/命令)?总共30个。

  2. 应该每项服务都使用自己独立的MSMQ吗?

  3. 对于那些15"服务器"项目,在生产环境中我需要安装NServiceBus.Host 15次(因此创建15个Windows服务实例)。 在VS中调试期间,当您开始调试时,将启动NSerivceBus.Host.exe。

  4. 所以你有效地"主持人"每个主机/服务器项目只有一个端点。或者我可以在其中拥有一个主机和15个端点吗?

    你可以告诉我我对这个ESB模式不熟悉,所以感谢你的意见。

2 个答案:

答案 0 :(得分:0)

  1. 您不需要15个类库。 NServiceBus可以根据消息的命名空间/类型对消息进行路由。 例如:“Message.Orders”的所有命名空间消息都可以路由到“Orders”队列。

  2. 在生产可能性..但它实际上取决于消息量和逻辑分组/分区。在开发中,我将为所有消息设置一个队列。

  3. 再次,这是一个由逻辑分区决定的部署问题。通常你会编写脚本来处理这些服务的安装/卸载。我在powershell脚本中有我的。

  4. NServiceBus在分割邮件的方式和时间方面非常灵活。它通常在UAT或Production中的配置级别以及开发生命周期之外完成。请记住,一个NServiceBus主机== 1 MSMQ

    我首先使用一个服务,然后根据卷/优先级消息开始分区。

    此外,如果要在不暴露其他消息类型的情况下将这些程序集公开给外部解决方案,则将消息细分为15个类的唯一原因。

答案 1 :(得分:0)

SOA服务定义中的服务(资本s :-))是业务能力的逻辑分组

端点是一个物理过程,例如,在您的ECommerce端点(网站)中,您可以让处理程序(程序集)形成在主机进程中部署的许多服务。

您可以从少量计算机上部署的少量端点开始,但是,随着您的扩展,您会发现在处理重要数据时您将需要将处理程序提取到自己的端点,并且您不需要处理重要数据。我想要"不重要"队列中的消息延迟了#34;重要的"邮件正在处理中。

对于队列,每个端点都有自己的私有队列。

当你达到高规模时,你最终会得到一个每个处理程序的端点场景,但是在你需要这样做之前可能需要一段时间,但是,我会从第一天开始使用一个处理程序=一个程序集并确保这些程序集之间没有引入依赖关系...

查看Udi's Blog

有意义的剂量?