标签: spring-cloud-aws

在Spring Boot中配置Amazon SQS队列名称

我正在使用AmazonSQS和Spring Boot(spring-cloud-aws-messaging).我已经配置了一个消息监听器来使用注释@SqsListener接收来自队列的消息.

@SqsListener(value = "indexerQueue", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void queueListener(String rawMessage) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

这是一个非常简单的方法,但我没有找到从配置文件加载队列名称的方法,因为我有不同的环境.关于这方面的任何想法?

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

3
推荐指数
1
解决办法
3787
查看次数

从 Hoxton.SR4 升级到 Spring Cloud Hoxton.SR7 后遇到错误

使用 Spring CloudHoxton.SR4和 Spring Boot2.2.9.RELEASE库,我的 Spring Boot 微服务可以正确启动,并且在本地环境中针对 localstack 运行时运行得很好,但是当我升级到 时Hoxton.SR7,我得到以下堆栈跟踪:

com.amazonaws.SdkClientException: Failed to connect to service endpoint: 
    at com.amazonaws.internal.EC2ResourceFetcher.doReadResource(EC2ResourceFetcher.java:100)
    at com.amazonaws.internal.InstanceMetadataServiceResourceFetcher.getToken(InstanceMetadataServiceResourceFetcher.java:91)
    at com.amazonaws.internal.InstanceMetadataServiceResourceFetcher.readResource(InstanceMetadataServiceResourceFetcher.java:69)
    at com.amazonaws.internal.EC2ResourceFetcher.readResource(EC2ResourceFetcher.java:66)
    at com.amazonaws.util.EC2MetadataUtils.getItems(EC2MetadataUtils.java:402)
    at com.amazonaws.util.EC2MetadataUtils.getData(EC2MetadataUtils.java:371)
    at org.springframework.cloud.aws.context.support.env.AwsCloudEnvironmentCheckUtils.isRunningOnCloudEnvironment(AwsCloudEnvironmentCheckUtils.java:38)
    at org.springframework.cloud.aws.context.annotation.OnAwsCloudEnvironmentCondition.matches(OnAwsCloudEnvironmentCondition.java:38)
    at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:108)
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader$TrackedConditionEvaluator.shouldSkip(ConfigurationClassBeanDefinitionReader.java:469)
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:131)
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:236)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:280)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:96)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:707)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
    at com.acme.Bootstrapper.main(Bootstrapper.java:33)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at …
Run Code Online (Sandbox Code Playgroud)

spring-cloud-aws

3
推荐指数
1
解决办法
1371
查看次数

我们应该如何使用 Spring Cloud AWS 3.0.2 设置 @SQSListener 删除策略?

我能够弄清楚如何设置它的唯一方法是在我的配置中使用以下覆盖:

@Bean("myFactory")
@ConditionalOnClass(SqsAsyncClient.class)
SqsMessageListenerContainerFactory<Object> mySqsListenerContainerFactory(
    SqsAsyncClient sqsAsyncClient) {
  return SqsMessageListenerContainerFactory.builder()
      .configure(
          options ->
              options.acknowledgementMode(
                  AcknowledgementMode.valueOf("ON_SUCCESS")))
      .sqsAsyncClient(sqsAsyncClient)
      .build();
}
Run Code Online (Sandbox Code Playgroud)

这在我的@SQSListener

@SqsListener(
      value = "myQueue",
      factory = "myFactory")
Run Code Online (Sandbox Code Playgroud)

我还没有弄清楚如何配置它,以便io.awspring.cloud.autoconfigure.sqs.SqsAutoConfiguration类可以设置确认模式,并且我可以获得让 Spring 自动配置我需要的一切的好处。谁能告诉我应该如何继续发展?

在 Spring Cloud AWS 3.x 之前,我们设置如下@SQSListener,似乎不再支持:

@SqsListener(
      value = "myQueue",
      deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)

Run Code Online (Sandbox Code Playgroud)

spring-cloud-aws

3
推荐指数
1
解决办法
1255
查看次数

Spring Cloud AWS - 将消息发送到 fifo 队列

我正在使用 spring-cloud-aws 向 SQS FIFO 队列发送消息。

它失败了

请求必须包含参数 MessageGroupId

spring-cloud-aws-messaging 中的 QueueMessagingTemplate 上似乎没有任何地方允许我设置此强制性 MessageGroupId。

目前是否有一种方法可以写入这个庄园中的 SQS FIFO 队列,或者我是否必须恢复到直接使用 amazons API?

amazon-sqs spring-cloud-aws

2
推荐指数
1
解决办法
3953
查看次数

如何使用 spring-cloud-aws-messaging 或 aws-java-sdk 设置 AWS SNS 消息属性值?

我有一个标准的 SNS 主题,并且我\xc2\xb4ve 设置了“订阅过滤策略”,如下所示:

\n
{\n  "event": [\n    "eventName"\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当我使用属性消息通过 AWS 控制台发布消息时,该消息将发送至正确的 SQS 订阅者。所以订阅过滤器工作得很好。

\n

现在我正在尝试对我的 java 代码(Spring Boot)执行相同的操作。

\n

我正在使用该库spring-cloud-aws-messaging,据我所知它只是 AWS JDK 的包装器。

\n

问题是我不知道如何设置消息属性,就像我在 AWS 控制台上所做的那样。

\n

\xc2\xb4 与我发送到 SNS 的 JSON 格式无关,属性始终位于 SNS 消息的正文中。我想有一个特定的方法来设置这些属性。

\n

我发现com.amazonaws.services.sns.model.MessageAttributeValue

\n

我不确定是否是正确的类,而且我无法理解如何发布消息和属性,因为发布方法不接受它。

\n
this.amazonSNS.publish(this.snsTopicARN, message, messageAttributes ???);\n
Run Code Online (Sandbox Code Playgroud)\n

java amazon-web-services amazon-sns spring-cloud spring-cloud-aws

2
推荐指数
1
解决办法
5654
查看次数

无法在Spring Boot应用程序中禁用ContextCredentialsAutoConfiguration

我正在开发一个Spring Batch应用程序,该应用程序应仅将AWS Cloud用于特定的配置文件。当前,我有一个使用aws的配置文件,另一个不应使用的配置文件,因为它使用本地数据库,本地文件等在本地运行应用程序(同时AWS配置文件将使用RDS,S3等)

对于使用AWS概要文件的配置,我具有以下内容:

@Configuration
@Profile("!localDev")

public class FileReaderConfigAWS {

@Value("${cloud.aws.s3.bucket}")
private String amazonS3Bucket;

@Autowired
private ResourceLoader resourceLoader;

private static final Logger logger = LoggerFactory.getLogger(FileReaderConfigAWS.class);


@Bean
@StepScope
public FlatFileItemReader<Object> flatFileReader(@Value("#{jobParameters['inputFile']}") String inputFile,  LineMapper
    lineMapper) {
    FlatFileItemReader<Object> flatFileItemReader = new FlatFileItemReader<>();

    flatFileItemReader.setResource(resourceLoader.getResource("s3://" + this.amazonS3Bucket + "/" + inputFile));

    flatFileItemReader.setLineMapper(lineMapper);

    return flatFileItemReader;
}


@Bean
public AbstractFileValidator inputFileValidator() {
    InputS3Validator inputS3Validator = new InputS3Validator();
    inputS3Validator.setRequiredKeys(new String[]{InputFileSystemValidator.INPUT_FILE});
    return inputS3Validator;
}

}
Run Code Online (Sandbox Code Playgroud)

对于我的localDev配置文件,我具有以下内容:

@Profile("localDev")
@Configuration
public class FileReaderConfigLocalDev {


@Bean
@StepScope
public FlatFileItemReader<Object> flatFileReader(@Value("#{jobParameters['inputFile']}") String …
Run Code Online (Sandbox Code Playgroud)

spring-batch spring-boot spring-cloud-aws

1
推荐指数
2
解决办法
2746
查看次数

cloud.aws.jdbc.datasource 抛出断言错误:Spring Boot 应用程序的密码不能为空

我目前正在开展一个项目,我们的应用程序需要在该项目中连接到 Amazon RDS 实例。到目前为止,我一直在使用以下文档进行设置:https : //cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html#_sdk_credentials_configuration

根据文档第 7.3 节,我应该将 application.properties 文件设置为:

cloud.aws.credentials.accessKey=XXXXXXXXXXXXXXX
cloud.aws.credentials.secretKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
cloud.aws.credentials.instanceProfile=true

cloud.aws.region.static=us-east-2

cloud.aws.rds.instanceNameTest
cloud.aws.rds.instanceNameTest.password=chownTestPW
cloud.aws.rds.instanceNameTest.username=dataTest1
cloud.aws.rds.instanceNameTest.databaseName=testDB
Run Code Online (Sandbox Code Playgroud)

但是,当我运行应用程序时,我收到以下错误:

Caused by: java.lang.IllegalArgumentException: Password must not be null
at org.springframework.util.Assert.notNull(Assert.java:193) ~[spring-core-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.cloud.aws.jdbc.datasource.DataSourceInformation.<init>(DataSourceInformation.java:65) ~[spring-cloud-aws-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.fromRdsInstance(AmazonRdsDataSourceFactoryBean.java:187) ~[spring-cloud-aws-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createDataSourceInstance(AmazonRdsDataSourceFactoryBean.java:153) ~[spring-cloud-aws-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:130) ~[spring-cloud-aws-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:45) ~[spring-cloud-aws-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:141) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1765) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1702) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
... 30 common frames omitted
Run Code Online (Sandbox Code Playgroud)

我不知道为什么当上面的设置看起来不错时,它告诉我密码为空。

任何的意见都将会有帮助。如果我需要提供其他任何东西,请告诉我。

谢谢。

jdbc amazon-rds spring-boot spring-cloud spring-cloud-aws

0
推荐指数
1
解决办法
591
查看次数