Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring cloud 配置@SQSListener时如何避免连接到AWS区域_Spring Cloud_Amazon Sqs_Localstack - Fatal编程技术网

Spring cloud 配置@SQSListener时如何避免连接到AWS区域

Spring cloud 配置@SQSListener时如何避免连接到AWS区域,spring-cloud,amazon-sqs,localstack,Spring Cloud,Amazon Sqs,Localstack,在localstack中测试应用程序时出现问题。要求很简单。我想通过SQS订阅订阅AWS-SNS中的一个主题。在localstack中,当我在配置@SQSListener时执行时,它尝试使用AWS验证凭据,我得到以下错误消息: org.springframework.beans.factory.BeanCreationException:创建名为“simpleMessageListenerContainer”的bean时出错,该bean在类路径资源[org/springframework/clo

在localstack中测试应用程序时出现问题。要求很简单。我想通过SQS订阅订阅AWS-SNS中的一个主题。在localstack中,当我在配置@SQSListener时执行时,它尝试使用AWS验证凭据,我得到以下错误消息:

org.springframework.beans.factory.BeanCreationException:创建名为“simpleMessageListenerContainer”的bean时出错,该bean在类路径资源[org/springframework/cloud/aws/messaging/config/annotation/SqsConfiguration.class]中定义:调用init方法失败;嵌套异常为com.amazonaws.SdkClientException:无法从链中的任何提供程序加载AWS凭据:

我尝试为localstack设置一个虚拟凭据,但也没有帮助。我试着在网上搜索,但找不到任何相关的帖子

代码
@Slf4j
@配置
@简介(“本地”)
@使能
@使能SQS
公共类LocalStackConfiguration{
@值(${sqsClassifierQueueName}”)
私有字符串sqsClassifierQueueName;
@值(${SQSConQueueNames}”)
私有列表sqsconsqueuename;
@Bean(name=“amazonSqs”)
公共AmazonSQS配置SQSClient()
抛出错误的DurException
{
log.info(“加载本地SQS客户端”);
BasicAWSCredentials awsCreds=新的BasicAWSCredentials(“用户”、“密码”);
AmazonSQS sqsClient=AmazonSQSClientBuilder.standard()
.具有凭证(新的AWSStaticCredentialsProvider(awsCreds))
.withEndpointConfiguration(新的AwsClientBuilder.EndpointConfiguration(“http://localhost:4576“,“us-east-1”))
.build();
创建队列(sqsClassifierQueueName);
sqsConsQueueNames.forEach(queueName->sqsClient.createQueue(queueName));
//log.info(“创建的设备注册表队列:”+sqsClient.createQueue(注册表队列URL.substring(注册表队列URL.lastIndexOf('/')+1));
返回sqsClient;
}
@Bean(name=“amazonSns”)
公共AmazonSNS配置SNSClient(){
AmazonSNS snsClient=amazonscsclientbuilder.standard()
.具有凭据(新的AWSStaticCredentialsProvider(新的基本凭据(“用户”、“密码”)))
.withEndpointConfiguration(新的AwsClientBuilder.EndpointConfiguration(“http://localhost:4575“,“us-east-1”))
.build();
返回snsClient;
}
}
@组成部分
@DependsOn(值={“amazonSns”,“amazonSqs”})
公共类SNS订阅{
@限定词(“亚马逊”)
@自动连线
私有亚马逊sns;
@限定词(“amazonSqs”)
@自动连线
私有AmazonSQS sqs;
@值(${snsClassifierTopicName}”)
私有字符串snsClassifierTopicName;
@值(${sqsClassifierQueueName}”)
私有字符串sqsClassifierQueueName;
@施工后
公共无效订阅主题(){
subscribeToClassifierTopics();
}
private void SubscribeToclassiferTopics(){
SNSSSubscriptionUtils.SubscribeToSq(sns、sqs、snsClassifierTopicName、SQSClassierQueueName);
}
@SqsListener(值=“${snsClassifierTopicName}”)
公共无效接收消息(对象obj){
系统输出打印项次(obj);
}
}
公共类SNSSubscriptionUtils{
公共静态void subscribeToSQS(AmazonSNS sns、AmazonSQS sqs、字符串topicName、字符串queueName){
字符串snsTopicArn=getSnsTopicArn(sns,topicName);
字符串queueUrl=SQSUtils.getQueueUrl(sqs,queueName);
subscribeQueue(sns、sqs、snsTopicArn、queueUrl);
}
公共静态字符串getSnsTopicArn(AmazonSNS-sns,字符串主题名){
字符串topicArn=sns.createTopic(topicName.gettopicar();
回归主题;
}
}
公共类SQSUtils{
公共静态字符串getQueueUrl(AmazonSQS sqs,字符串queueName){
GetQueueUrlRequest queueUrlRequest=新的GetQueueUrlRequest(queueName);
返回sqs.getQueueUrl(queueUrlRequest).getQueueUrl();
}
}

用主注释注释配置的bean

@Bean(name = "amazonSqs")
@Primary
public AmazonSQS configureSQSClient()

你试过在Primary上制作sqsbean吗?
@Bean(name = "amazonSqs")
@Primary
public AmazonSQS configureSQSClient()