Spring boot 我的SQSListener以messageID的形式返回正文,如何使用QueueMessagingTemplate Spring Boot获取send messageID?

Spring boot 我的SQSListener以messageID的形式返回正文,如何使用QueueMessagingTemplate Spring Boot获取send messageID?,spring-boot,amazon-sqs,spring-messaging,spring-cloud-aws,Spring Boot,Amazon Sqs,Spring Messaging,Spring Cloud Aws,关于Spring AWS-SQS sdk,我有两个问题(或者我做得不对) 首先,我在前面使用了CLI,并成功获取了已发送消息的消息Id示例: aws sqs send-message --queue-url https://sqs.us-west-2.amazonaws.com/testqueue --message-body hooray '{ "MD5OfMessageBody": "d3101ad", "MessageId": "jdhj-933" } 现在我尝

关于Spring AWS-SQS sdk,我有两个问题(或者我做得不对)

首先,我在前面使用了CLI,并成功获取了已发送消息的消息Id示例:

aws sqs send-message --queue-url https://sqs.us-west-2.amazonaws.com/testqueue --message-body hooray   

'{
    "MD5OfMessageBody": "d3101ad", 
    "MessageId": "jdhj-933"
}
现在我尝试了
springcloudstarteraws消息传递
,我设置了一个类似这样的队列消息传递模板

private final QueueMessagingTemplate queueMessagingTemplate;

  public SqsQueueService(@Qualifier("amazonSQSAsync") final AmazonSQSAsync amazonSQS) {
    this.queueMessagingTemplate = new QueueMessagingTemplate(amazonSQS);
  }

  public void sendMessage(String queueName, String queueMessage) {
    Map<String, Object> headers = new HashMap<>();
    queueMessagingTemplate.convertAndSend(queueName, queueMessage, headers);
  }

消息始终等于messageId,这让人困惑,有没有关于我可能出错的地方的建议?

我将listner方法签名更改为

 @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();
  }
然后从headers映射中提取messageId

 @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();
  }