使用 @SqsListener 注解为 FIFO 配置消息组 ID

Posted

技术标签:

【中文标题】使用 @SqsListener 注解为 FIFO 配置消息组 ID【英文标题】:Configure message group ID for FIFO using @SqsListener annotation 【发布时间】:2019-10-22 13:22:05 【问题描述】:

我正在使用 Spring Cloud API 提供的 @SqsListener 来使用 FIFO 队列中的消息。我想根据特定的消息组 ID 使用消息。不确定在哪里配置此设置。

我尝试阅读 AWS Spring Cloud 文档并进行了一些谷歌搜索,但找不到答案或示例。

我的注释是这样的:

@SqsListener(value = orderQueue, deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)

我有以下 SQS 配置:

        public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSQSAsync) 
            return new QueueMessagingTemplate(amazonSQSAsync);
        

并使用以下依赖项:

            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-aws</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-aws-messaging</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>

我主要是在寻找关于如何配置@SqsListener 以根据消息组 ID 读取消息的答案。

【问题讨论】:

【参考方案1】:

我认为即使是 AWS sdk 也没有提供通过 groupId 使用消息的方法。 groupId 基本上只是一种在 Fifo 队列中构建消息集群的机制。然后保证集群内的消息按照它们发送的顺序传递。

【讨论】:

以上是关于使用 @SqsListener 注解为 FIFO 配置消息组 ID的主要内容,如果未能解决你的问题,请参考以下文章

SQSListener 不使用队列中的消息

将 SqsListener 与 SNS 和 SQS 一起使用

如何使用 Amazon SQS Spring 云注释 @SqsListener 轮询特定数量的消息

Xilinx FIFO的使用

设计开发 典型同步电路设计- 同步FIFO

FPGA设计实用分享02 之 XILINX的可参数化FIFO