Я использую spring-boot-2.2.1 вместе с AWS SNS & SQS. Я публиковал сообщение из SNS в SQS. Я могу получить сообщение, используя строку, но @NotificationMessage возвращает ноль вместо тела сообщения. Тот же код работал нормально, когда я использовал spring-boot-1.5.19
pom. xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-messaging</artifactId>
</dependency>
Основной файл
@SpringBootApplication
public class AwsApplication {
public static void main(String[] args) {
SpringApplication.run(AwsApplication.class, args);
}
@Bean
public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSqs) {
return new QueueMessagingTemplate(amazonSqs);
}
@Bean
public NotificationMessagingTemplate notificationMessagingTemplate(
AmazonSNS amazonSNS) {
return new NotificationMessagingTemplate(amazonSNS);
}
@Bean
public IotClient getIotClient() {
return IotClient.builder()
.credentialsProvider(() -> AwsBasicCredentials.create(AWS_ACCESSKEY, AWS_SECRETKEY))
.credentialsProvider(() -> InstanceProfileCredentialsProvider.create().resolveCredentials())
.region(Region.US_EAST_2)
.build();
}
}
Класс прослушивателя SQS
@SqsListener(value = "${sqs.consumer.name}")
public void receiveSnsSqs(String message, @NotificationMessage Employee employee) {
System.out.println("SNS Consumer received the message::"+message);
System.out.println("SNS Consumer received the notificationMessage::"+employee);
}
В приведенном выше классе прослушивателя я могу получить сообщение, но сотрудник получает нулевое значение. Я отправляю сообщение от AWS SNS напрямую.
Как я уже говорил, он работал нормально до того, как перестал работать после миграции весенней версии на выпуск 2.2.1.
Любая помощь будет очень ценится.