簡體   English   中英

Spring 雲 SQS 監聽器接收到空 POJO

[英]Spring Cloud SQS listener receives empty POJO

我使用 Spring Cloud: spring-cloud-aws-messaging來實現 SNS + SQS。 我有 SQS 監聽器:

 @Transactional
  @SqsListener(value = "${sqs.queue.name}", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
  public void processMessage(UserEvent userEvent) {
    try {
      System.out.println(userEvent);
    } catch (Exception e) {
      LOG.error(e);
    }
  }

帶配置

 @Bean
  public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSQSAsync) {
    return new QueueMessagingTemplate(amazonSQSAsync);
  }

  @Bean
  public QueueMessageHandlerFactory queueMessageHandlerFactory(
      final ObjectMapper mapper, final AmazonSQSAsync amazonSQSAsync){

    final QueueMessageHandlerFactory queueHandlerFactory =
        new QueueMessageHandlerFactory();
    queueHandlerFactory.setAmazonSqs(amazonSQSAsync);
    queueHandlerFactory.setArgumentResolvers(Collections.singletonList(
        new PayloadMethodArgumentResolver(jackson2MessageConverter(mapper))
    ));
    return queueHandlerFactory;
  }

  private MessageConverter jackson2MessageConverter(final ObjectMapper mapper){
    MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
    converter.setObjectMapper(mapper);
    return converter;
  }

UserEvent 是一個帶有 setter/getter 和默認構造函數的 POJO。 問題是 SQS 偵聽器收到空的 object。 我懷疑QueueMessageHandlerFactory配置錯誤。 如果我將 SQS 偵聽器參數更改為字符串,我會收到消息:

{
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:111111111111:topic-name:6ea68f67-306c-4385-858b-laskdjfsd123",
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-1ff5318643ec183fbaddaa2a969abadf.pem",
"Signature" : "Ikjay6NCGmwhyNothdvNVWNps1OMOcBuCGT+trYqVzdSLX79cCBgZeX5ZynTlC+ewsRYFH2bVW521pK88j+Z3/uDxGBrMkd6SZ/GBF1Rnl5pB4UG4aZXLP3uxE0MDX+lUPX2aCu6ta/ii3gI7vxtqKoUzqTt8aNHVMT5GG9xjLg2yIxW97MKRLbSHug5NXetlSwYdNuwq/P85Eur6BkufpLg5aummfAwfpR9ZaNdFEqjBl0nYj96q46w6UKFHaZDEgeit1TMBYjCKM3VzuyMSOPQ==",
"SignatureVersion" : "1",
"Timestamp" : "2022-03-03T14:44:49.000Z",
"Message" : "{\"id\":\"1\",\"name\":\"Alex\"}",
"TopicArn" : "arn:aws:sns:us-west-2:111111111111:topic-name",
"MessageId" : "c765b712-d774-558a-a070-ed8801d5e34r",
"Type" : "Notification"
}

請讓我知道我做錯了什么。

確保您在 SNS 訂閱中啟用了“原始消息傳遞”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM