SQSlistener 没有收到消息
SQSlistener not receiving messages
我可以从我的 springboot 向 SQS 队列发送消息,但无法使用 sqslistener 注释接收消息,有人可以帮忙吗?
public void send(String message) {
queueMessagingTemplate.convertAndSend("test-queue", MessageBuilder.withPayload(message).build());
}
@SqsListener(value = "test-queue", deletionPolicy = SqsMessageDeletionPolicy.NEVER)
public void receive(String message)
{
System.out.println("message: " + message);
}
我已验证通过 goign 发送到 AWS 控制台,我可以在队列中看到我的消息,但它们没有接收方法。
配置:
@Bean
public AmazonSQSAsyncClient amazonSQSAsyncClient()
{
AmazonSQSAsyncClient amazonSQSAsyncClient= new AmazonSQSAsyncClient(amazonAWSCredentials());
if (!StringUtils.isEmpty(amazonSqsEndpoint)) {
amazonSQSAsyncClient.setEndpoint(amazonSqsEndpoint);
}
}
@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory() {
SimpleMessageListenerContainerFactory msgListenerContainerFactory = new SimpleMessageListenerContainerFactory();
msgListenerContainerFactory.setAmazonSqs(amazonSQSAsyncClient());
return msgListenerContainerFactory;
}
@Bean
public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSqs) {
return new QueueMessagingTemplate(amazonSQSAsyncClient());
}
@Bean
public BasicAWSCredentials amazonAWSCredentials() {
return new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey);
}
原来我在 SQS 控制台和我的代码中的队列名称中有错别字,我的错。
在我的例子中,指定了错误的区域。出于某种原因,发送没有抱怨并将消息推送到队列,但没有调用侦听器。修复 application.yml 文件中的区域解决了问题。
虽然晚了,但或许能帮到一些人。在我的例子中,我使用了 gradle 和这些配置
implementation "io.awspring.cloud:spring-cloud-starter-aws-messaging:2.3.0"
implementation "io.awspring.cloud:spring-cloud-aws-dependencies:2.3.0"
它不工作,下面的工作对我来说是完美的:
compile "io.awspring.cloud:spring-cloud-starter-aws-messaging:2.3.0"
compile "io.awspring.cloud:spring-cloud-aws-dependencies:2.3.0"
我可以从我的 springboot 向 SQS 队列发送消息,但无法使用 sqslistener 注释接收消息,有人可以帮忙吗?
public void send(String message) {
queueMessagingTemplate.convertAndSend("test-queue", MessageBuilder.withPayload(message).build());
}
@SqsListener(value = "test-queue", deletionPolicy = SqsMessageDeletionPolicy.NEVER)
public void receive(String message)
{
System.out.println("message: " + message);
}
我已验证通过 goign 发送到 AWS 控制台,我可以在队列中看到我的消息,但它们没有接收方法。 配置:
@Bean
public AmazonSQSAsyncClient amazonSQSAsyncClient()
{
AmazonSQSAsyncClient amazonSQSAsyncClient= new AmazonSQSAsyncClient(amazonAWSCredentials());
if (!StringUtils.isEmpty(amazonSqsEndpoint)) {
amazonSQSAsyncClient.setEndpoint(amazonSqsEndpoint);
}
}
@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory() {
SimpleMessageListenerContainerFactory msgListenerContainerFactory = new SimpleMessageListenerContainerFactory();
msgListenerContainerFactory.setAmazonSqs(amazonSQSAsyncClient());
return msgListenerContainerFactory;
}
@Bean
public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSqs) {
return new QueueMessagingTemplate(amazonSQSAsyncClient());
}
@Bean
public BasicAWSCredentials amazonAWSCredentials() {
return new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey);
}
原来我在 SQS 控制台和我的代码中的队列名称中有错别字,我的错。
在我的例子中,指定了错误的区域。出于某种原因,发送没有抱怨并将消息推送到队列,但没有调用侦听器。修复 application.yml 文件中的区域解决了问题。
虽然晚了,但或许能帮到一些人。在我的例子中,我使用了 gradle 和这些配置
implementation "io.awspring.cloud:spring-cloud-starter-aws-messaging:2.3.0"
implementation "io.awspring.cloud:spring-cloud-aws-dependencies:2.3.0"
它不工作,下面的工作对我来说是完美的:
compile "io.awspring.cloud:spring-cloud-starter-aws-messaging:2.3.0"
compile "io.awspring.cloud:spring-cloud-aws-dependencies:2.3.0"