2014-10-16 76 views
0

我想了解NServiceBus给出的在线文档。我无法控制的是基础设施的整体建议设置。 我们的应用程序应该能够同时运行单个机器和跨多个(逻辑上不同)的站点(n个商店-1总部)。 至于NServiceBus(我通过NuGet使用v5),我不完全理解主机和端点的概念。一个NServiceBus.Host为一个EndPoint,什么是推荐的方法

比方说,我们有15个服务(订单服务,项目服务等)。

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

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

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

因此,您有效地“托管”每个主机/服务器项目的一个端点。或者我可以拥有一台主机和15个端点吗?

你可以告诉我是新来这个ESB模式,十分感谢您的输入。

回答

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

  2. 在生产可能性

    ..但它确实取决于消息的体积和逻辑分组/分区上。在开发中,我会为所有消息设置一个队列。

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

NServiceBus在如何以及何时对消息进行分区方面非常灵活。它通常在UAT或Production的配置级别以及开发生命周期之外完成。记住,一个NServiceBus主机== 1 MSMQ

我开始一个服务,然后再启动基于体积/优先级的消息分区。

此外,唯一的原因,你会崩溃的消息,15类,如果你想公开这些组件与外部解决方案,而暴露的其它消息类型。

0

服务(大写S :-)在SOA服务的定义)是业务能力的逻辑分组

端点是物理过程,例如,在您的电子商务端点(网站),你可以有处理程序(程序集)形成部署在主机进程中的许多服务。

您可以在少数机器上部署少量端点,但是,随着您扩展,您会发现在处理重要数据时您会希望将处理程序提取到其自己的端点,而您不需要希望队列中的“不重要”消息延迟正在处理的“重要”消息。

至于队列,每个端点都有自己的专用队列。

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

看看Udi's Blog

剂量有意义吗?

相关问题