小编sts*_*itt的帖子

Spring Boot 中具有不同凭证的多个 AWS SQS 队列

我有一个 Spring Boot 应用程序,想要从多个 AWS SQS 队列接收消息。这些队列都有自己的凭据(遗憾的是我对此无能为力)。这些凭证都不能访问其他队列之一,它们都仅限于一个队列。

只需一个队列和凭据,这很简单。我只需提供 Bean 形式的凭据并用\AWSCredentialsProvider注释我的方法。 但我不知道如何使用多个凭据来做到这一点。@SqsListener@EnableSqs

注释@SqsListener无法提供凭据、预配置AmazonSqs对象或其他任何有帮助的内容。

我寻找一种通过扩展CredentialsProviderAmazonSqs客户端来将队列映射到凭据的方法,但无济于事。
我什至尝试将凭证注入 AmazonHttpClient 的标头中,但这也是不可能的。

我尝试创建手动监听 SQS 队列所需的一切。但我坚持为SimpleMessageListenerContainer.
所需的QueueMessageHandler仅在使用应用程序上下文创建为 bean 时才有效。否则它不会查找用 注释的方法@SqsListener
遗憾的是,我能找到的唯一教程或示例要么使用 JMS(我想避免使用 JMS),要么仅使用@SqsListener一个队列的注释。

还有其他方法可以为多个队列提供不同的凭据吗?

我的测试代码:

@Component
@Slf4j
public class TestOneQueueA {

  public static final String QUEUE_A = "TestOneQueueA";

  public TestOneQueueA(Cloud cloud, ResourceIdResolver resourceIdResolver) {
    SqsServiceInfo serviceInfo = (SqsServiceInfo) cloud.getServiceInfo(QUEUE_A);
    AWSStaticCredentialsProvider credentialsProvider =
        new AWSStaticCredentialsProvider(new BasicAWSCredentials(serviceInfo.getAccessKey(),
            serviceInfo.getSecretAccessKey()));

    AmazonSQSAsync …
Run Code Online (Sandbox Code Playgroud)

java spring amazon-sqs spring-boot spring-cloud-aws

7
推荐指数
1
解决办法
6297
查看次数

标签 统计

amazon-sqs ×1

java ×1

spring ×1

spring-boot ×1

spring-cloud-aws ×1