从 Spring Boot 连接到 AWS SQS 时出错

Bha*_*gav 6 spring amazon-sqs amazon-web-services spring-boot spring-cloud

我正在尝试使用 spring cloud AWS 将 AWS SQS 集成到我的 springboot 应用程序中,但不断收到此错误(在下面发布),有人可以帮忙吗?

这是我的文件。

org.springframework.beans.factory.BeanCreationException:创建名为“simpleMessageListenerContainer”的 bean 在类路径资源 [org/springframework/cloud/aws/messaging/config/annotation/SqsConfiguration.class] 中定义时出错:调用 init 方法失败;嵌套异常是 java.lang.NoSuchMethodError: com.amazonaws.http.ExecutionContext.setCredentials(Lcom/amazonaws/auth/AWSCredentials;)V

@Configuration
public class AWSConfig {
    @Value("${amazon.dynamodb.endpoint}")
    private String amazonDynamoDBEndpoint;

    @Value("${amazon.aws.accesskey}")
    private String amazonAWSAccessKey;

    @Value("${amazon.aws.secretkey}")
    private String amazonAWSSecretKey;

    @Value("${amazon.sqs.endpoint}")
    private String amazonSqsEndpoint;
    @Bean
    @Primary
    public AmazonSQSAsyncClient amazonSQSAsyncClient() {

        AmazonSQSAsyncClient amazonSQSAsyncClient = new AmazonSQSAsyncClient(amazonAWSCredentials());
        if (!StringUtils.isEmpty(amazonSqsEndpoint)) {
            amazonSQSAsyncClient.setEndpoint(amazonSqsEndpoint);
        }

        return amazonSQSAsyncClient;

    }

    @Bean
    public AWSCredentials amazonAWSCredentials() {
        return new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以与 dynamodb 一起工作,但无法连接到 SQS。我已经在 application.properties 文件中提供了正确的访问密钥、秘密访问密钥和端点。

@Component
    @EnableSqs
    public class SQSDao {
        private static final Logger logger = LoggerFactory.getLogger(SQSDao.class);

        private  QueueMessagingTemplate queueMessagingTemplate;

        @Autowired
        public SQSDao(AmazonSQSAsync amazonSqs) {
            this.queueMessagingTemplate = new QueueMessagingTemplate(amazonSqs);
        }

        public void send(String message) {
            System.out.println(queueMessagingTemplate.getDefaultDestination());
            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);
        }

    }
Run Code Online (Sandbox Code Playgroud)

Bha*_*gav -5

修复了它,显然问题与此处提到的依赖混合有关

  • 请发布一个合法的答案 (11认同)