0

鉴于在线文档,我正在尝试了解 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 将在您开始调试时启动。

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

您可以说我是这个 ESB 模式的新手,所以感谢您的意见。

4

2 回答 2

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

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

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

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

我先从一项服务开始,然后根据卷/优先级消息开始分区。

此外,如果您想将这些程序集公开给外部解决方案而不公开其他消息类型,那么您将消息分解为 15 个类的唯一原因。

于 2014-10-16T23:05:35.900 回答
0

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

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

您可以从部署在少量机器上的少量端点开始,但是,随着您的扩展,您会发现您需要将处理程序提取到它们自己的端点,因为它们处理重要数据并且您不希望“un-队列中的重要”消息,以延迟正在处理的“重要”消息形式。

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

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

看看Udi 的博客

剂量有意义吗?

于 2014-10-17T09:17:39.350 回答