0

我目前正在使用 SNS 和 SQS 来集成不同的远程系统。生产者向订阅了 SQS 的 AWS SNS 发送消息。消费者是启用了 spring 集成的 Spring Boot 应用程序,它使用 @SqsListener 轮询 SQS(默认配置,无需调整)。这一切都很好。

要求是以正确的顺序处理这些消息,这主要是从生产者的角度来看按时间顺序的创建时间驱动的。由于它们中的一些可能是依赖的,因此我必须考虑到原始订单来一一处理它们。

问题是我知道当侦听器轮询 SQS 时,SQS 不能保证这些消息按顺序到达。我已经通过以正确的顺序以编程方式向 SNS 发送几条消息来调查这一点,我希望它们被处理并在 SqsListener 中以稍微不同的顺序接收这些消息。

为了尝试处理这种不需要的影响,我在 SqsListener 之后放置了一个优先通道来缓冲这些消息并让这个通道重新排序消息。

这是按顺序处理标准 SQS 消息的正确方法吗?我是否应该调整侦听器配置,例如将其更改为长轮询?

4

0 回答 0