0

在考虑 NServiceBus 中的服务时,您会在什么时候开始质疑服务处理的消息数量过多,并开始将这些消息分解为新服务?

考虑以下内容:我有一个销售服务,目前可以分解为几个不同的业务组件,它们是销售订单验证、销售订单处理、采购订单验证和采购订单处理。

目前该服务中使用了大约 20 个消息处理程序和 2 个 saga。我担心的是,在来自我的网站的大量流量期间,这可能会导致消息的初始峰值跃升至数百条。考虑到消息需要按照从队列中取出的顺序进行处理,这可能会导致队列中最后一个消息的延迟(取决于每条消息的处理方式)。

当将服务中的关注点分成更小的业务组件时,我发现这让事情变得更容易一些。当然,这是一种逻辑上的分离,但它似乎提供了一层清晰和理解。对我来说,这样做似乎比创建新服务更容易,因为最终我拥有的服务越多,我需要做的维护就越多。

有没有人对此有类似的担忧?

4

1 回答 1

1

我想你实际上已经回答了你自己的问题:)

一旦消息量达到延迟成为问题的程度,您就可以考虑实例化您的端点。您不一定需要减少处理程序的数量。您可以简单地多次安装该服务,并通过映射将特定的消息类型发送到相关端点。

所以它变成了一个简单的实例安装和一些配置更改的问题。因此,您可以在发送时拆分消息,以便来自特定源的消息最终到达特定端点(可能是优先级)消息类型。

我碰巧在以前的项目中做了同样的事情(虽然没有使用 NServiecBus),我们需要尽快处理来自 UI 的文档转换消息。我们只需使用自己的队列集再次安装转换服务,并更改 UI 配置以将转换消息发送到新端点。后台转换消息仍会发送到前一个端点。所以这里来源决定了分离。

于 2013-03-19T10:52:11.753 回答