首页 > 解决方案 > SQSListener 缺少消息 ID

问题描述

我有一个 SQSListener 设置,虽然它接收有效负载,但它缺少所消费消息的 messageId,我做错了什么吗?,下面是我的代码,

@SqsListener(value = "${test-queue-url}", deletionPolicy = SqsMessageDeletionPolicy.NEVER)
  public void listen(Acknowledgment acknowledgment, String message, String messageId) {
    // messageId == null here 
    LOG.info(messageId);
  }

标签: spring-bootamazon-sqs

解决方案


将我的代码更改为并从标题中提取值

@Async
  @SqsListener(value = "${queue-url}", deletionPolicy = SqsMessageDeletionPolicy.NEVER)
  public void listen(Acknowledgment acknowledgment, String message, @Headers MessageHeaders headers) throws ExecutionException, InterruptedException {
    String messageId = (String) headers.get("MessageId");
    acknowledgment.acknowledge().get();
  }

推荐阅读