我想运行一个 Spring Integration 流程,如果达到任何容量,我可以轻松地扩展组件实例。
特别是,我想知道如何在以下场景中扩展聚合器:聚合器层之前的各种组件产生类 X 对象的不同部分-假设它们产生两个这样的对象 X 1, X 2的部分-部分称为 {a 1 , b 1 } 和 {a 2 , b 2 }, 分别。聚合器现在应该从它们的部分构造 X 1和 X 2并发送它们。我们还假设有两个聚合器 A 1和 A 2。
我怎样才能最容易地设置它,使其按预期工作,即创建并发送X 1和 X 2 ?
我看到以下注意事项:
- A 1得到 a 1, A 2得到 b 1,并且 X 1不能在没有额外的东西的情况下被构造。
- 我们想要一些负载平衡,这首先是多个聚合器的原因。
- 如果需要,应轻松添加额外的聚合器 - 应避免聚合器数量的静态配置。
我想知道以下内容是否对我有用 - 这是基于 Spring Integration 文档,但我不确定我是否正确。
- 设置一个Redis Message Store,其中部分 X 1和 X 2将在所有可用之前存储。
- 在所有聚合器实例之间共享消息存储。这是聚合器配置中的设置 (6) 。
- (与聚合器一样)使用相同的 CORRELATION_ID 标记相同 X 的部分(a 和 b)。根据收到的 a 和 b 编写 ReleaseStrategy。
- 创建一个Redis Lock Registry并配置所有 Aggregator 以使用它。这是聚合器配置中的设置 (20) 。
这会吗?尤其是:
- 我可以在多个聚合器之间共享一个 MessageStore 吗?
- 共享 MessageStore 时,如果 A 1将 a 1写入其中并且 A 2写入 b 1,我的 ReleaseStrategy 是否会看到 X 1现在已准备好组装?
- 是否只有一个 Aggregator 使用 ReleaseStrategy 处理聚合并发送组装好的 X,因为我正在使用锁?
非常感谢!