Spring Cloud Dataflow - 保留消息顺序

Spring Cloud Dataflow - Retaining Order of Messages

假设我有一个包含 3 个应用程序的流 - 源、处理器和接收器。

我需要保留从来源收到的消息的顺序。当我收到消息 A、B、C、D 时,我必须将它们作为 A、B、C、D 发送到接收器。 (我无法将它们发送为 B、A、C、D)。

如果我每个应用程序只有 1 个实例,所有内容都会 运行 顺序并且顺序将被保留。

如果每个应用程序有 10 个实例,消息 A、B、C、D 可能会在不同实例中同时处理。我不知道这些消息会以什么顺序结束。

那么有什么方法可以确保在使用多个实例时保留消息的顺序?

否;当你横向扩展时(通过活页夹中的并发或通过部署多个实例),你失去了秩序。对于任何多线程应用程序都是如此,而不仅仅是 spring-cloud-stream。

您可以使用分区,以便每个实例获得数据的一个分区,但排序仅保留在每个分区内。

如果您的消息中有序列信息,您可以使用 Spring Integration Resequencer 添加一个自定义模块,将您的消息重新组合成相同的序列 - 但在单个接收器实例。