小编Pan*_*han的帖子

SQS 侦听器 @Headers 获取正文内容而不是消息属性

我正在使用 Spring Cloud SQS 消息传递来监听指定的队列。因此使用@SqsListener注释如下:

    @SqsListener(value = "${QUEUE}", deletionPolicy = SqsMessageDeletionPolicy.ALWAYS )
    public void receive(@Headers Map<String, String> header, @Payload String message)  {
        try {
            logger.logInfo("Message payload is: "+message);
            logger.logInfo("Header from SQS is: "+header);

            if(<Some condition>){
                //Dequeue the message once message is processed successfully
                awsSQSAsync.deleteMessage(header.get(LOOKUP_DESTINATION), header.get(RECEIPT_HANDLE));
            }else{
                logger.logInfo("Message with header: " + header + " FAILED to process");
                logger.logError(FLEX_TH_SQS001);
            }
        } catch (Exception e) {
            logger.logError(FLEX_TH_SQS001, e);
        }       
    }
Run Code Online (Sandbox Code Playgroud)

我能够成功连接指定的队列并读取消息。在发送消息之前,我将消息属性设置为“Key1”=“Value1”以及 aws 控制台中的消息。以下是消息正文:

{
"service": "ecsservice"
}
Run Code Online (Sandbox Code Playgroud)

我期望“标头”收到所有消息属性的映射以及 Key1 和 Value1。但我收到的是: {service=ecsservice} …

amazon-sqs spring-boot spring-cloud

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

amazon-sqs ×1

spring-boot ×1

spring-cloud ×1