Spring云数据流-保留消息顺序

Spring云数据流-保留消息顺序,spring,cloud-foundry,spring-cloud-stream,spring-cloud-dataflow,Spring,Cloud Foundry,Spring Cloud Stream,Spring Cloud Dataflow,假设我有一个包含3个应用程序的流——源、处理器和接收器 我需要保留从我的来源收到的消息的顺序。当我收到消息A、B、C、D时,我必须将它们作为A、B、C、D发送到接收器(我不能将它们作为B、A、C、D发送) 如果每个应用程序只有一个实例,那么一切都将按顺序运行,并且顺序将被保留 如果每个应用程序有10个实例,那么消息A、B、C、D可能会在不同的实例中同时得到处理。我不知道这些信息会以什么顺序结束 那么,在使用多个实例时,是否有任何方法可以确保保留消息的顺序?否;当您向外扩展时(通过绑定器中的并发或

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

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

如果每个应用程序只有一个实例,那么一切都将按顺序运行,并且顺序将被保留

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

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

否;当您向外扩展时(通过绑定器中的并发或部署多个实例),您将失去订单。这适用于任何多线程应用程序,而不仅仅是SpringCloudStream

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

如果消息中包含序列信息,则可以使用添加自定义模块将消息重新组合回相同的序列中,但在单个接收器实例之前需要一个重排序器实例