标签: spring-cloud-aws

如何为测试禁用 AWS 参数存储自动配置?

我已经spring-cloud-starter-aws-parameter-store-config按照spring 文档中的说明添加了依赖项。现在,对于单元测试,我想禁用参数存储配置。但是做不到。

我尝试在 test/application.properties 中设置以下属性

 aws.paramstore.enabled=false
Run Code Online (Sandbox Code Playgroud)

还试图排除AwsParamStoreBootstrapConfiguration.class来自AutoConfiguration但仍然没有工作。

例外

引起:org.springframework.beans.BeanInstantiationException:无法实例化[com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagement]:工厂方法'ssmClient'抛出异常;嵌套异常是 com.amazonaws.SdkClientException: Unable to find a region via the region provider chain。必须在构建器或设置环境中提供显式区域以提供区域。在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] 在 org.springframework.beans.factory。 support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:582) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] ... 83个常见框架省略导致:com.amazonaws.SdkClientException:无法通过区域提供商链找到区域。必须在构建器或设置环境中提供显式区域以提供区域。在 com.amazonaws.client.builder.AwsClientBuilder.setRegion(AwsClientBuilder.java:371) ~[aws-java-sdk-core-1.11.336.jar:na] 在 com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties( AwsClientBuilder.java:337) ~[aws-java-sdk-core-1.11.336.jar:na] 在 com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46) ~[aws-java-sdk -core-1.11.336.jar:na] 在 com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagementClientBuilder.defaultClient(AWSSimpleSystemsManagementClientBuilder.java:44) ~[aws-java-sdk-ssm-1.11.336.jar:na] 在 org .springframework.cloud.aws.autoconfigure.paramstore.AwsParamStoreBootstrapConfiguration。

java spring unit-testing spring-boot spring-cloud-aws

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

防止 spring-cloud-aws-messaging 尝试停止队列

spring-cloud-aws-messaging在 Spring Boot 项目中使用。
我在 AWS 中手动创建了 SQS 队列。

它的使用方式如下:

@SqsListener("${sqs.name.incoming}")
public void listen(String message) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

它工作正常。但是当我在 IDE 中停止我的应用程序时,或者当 Spring Boot 测试完成时,它会尝试停止队列。它无法阻止它并最终超时。它抛出这个异常:

2019-10-29 15:40:07.949  WARN 10378 --- [       Thread-2] s.c.a.m.l.SimpleMessageListenerContainer : An exception occurred while stopping queue 'my-awesome-queue-name'

java.util.concurrent.TimeoutException: null
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:204) ~[na:na]
    at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.waitForRunningQueuesToStop(SimpleMessageListenerContainer.java:161) ~[spring-cloud-aws-messaging-2.1.3.RELEASE.jar:2.1.3.RELEASE]
    at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.doStop(SimpleMessageListenerContainer.java:140) ~[spring-cloud-aws-messaging-2.1.3.RELEASE.jar:2.1.3.RELEASE]
    at org.springframework.cloud.aws.messaging.listener.AbstractMessageListenerContainer.stop(AbstractMessageListenerContainer.java:351) ~[spring-cloud-aws-messaging-2.1.3.RELEASE.jar:2.1.3.RELEASE]
    at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.stop(SimpleMessageListenerContainer.java:45) ~[spring-cloud-aws-messaging-2.1.3.RELEASE.jar:2.1.3.RELEASE]
    at org.springframework.cloud.aws.messaging.listener.AbstractMessageListenerContainer.stop(AbstractMessageListenerContainer.java:239) ~[spring-cloud-aws-messaging-2.1.3.RELEASE.jar:2.1.3.RELEASE]
    at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.stop(SimpleMessageListenerContainer.java:45) ~[spring-cloud-aws-messaging-2.1.3.RELEASE.jar:2.1.3.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:238) ~[spring-context-5.1.10.RELEASE.jar:5.1.10.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.access$300(DefaultLifecycleProcessor.java:53) ~[spring-context-5.1.10.RELEASE.jar:5.1.10.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:377) ~[spring-context-5.1.10.RELEASE.jar:5.1.10.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.stopBeans(DefaultLifecycleProcessor.java:210) ~[spring-context-5.1.10.RELEASE.jar:5.1.10.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.onClose(DefaultLifecycleProcessor.java:128) ~[spring-context-5.1.10.RELEASE.jar:5.1.10.RELEASE] …
Run Code Online (Sandbox Code Playgroud)

java spring-boot spring-messaging spring-cloud spring-cloud-aws

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

带有Spring-cloud-aws和cloudwatch指标的Springboot

我想在我的Springboot应用程序中开始使用指标,我也想将它们发布给我的亚马逊云观察

我知道使用Springboot我们可以激活弹簧执行器,它提供内存指标并将它们发布到/ metrics端点.

我偶然发现Spring-cloud似乎有一些lib定期将这些指标发布到Cloudwatch,但我不知道如何设置它们?绝对有0个如何使用它的例子.

任何人都可以解释将指标发送到cloudwatch的步骤是什么?

metrics amazon-cloudwatch spring-boot spring-cloud-aws

6
推荐指数
2
解决办法
5043
查看次数

如何修改 Spring Cloud AWS 用于反序列化 SQS 消息的对象映射器?

我需要修改 Spring Cloud AWS 在反序列化 JSON 并使用它注册 JavaTime 模块时使用的 Jackson2 对象映射器。这是因为 SQS 负载包含必须使用 JavaTime 模块反序列化的 Java Instant 类的实例。

细节:

这是 SQS 侦听器方法:

@SqsListener(value = "mysqs",deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void handleChangedEventFromSqsQueue(@NotificationMessage ChangeEvent event) {
    try {
        // Handle ChangeEvent object here
    } catch (Throwable t) {
        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

这是 ChangedEvent 类:

public class ChangeEvent {
    private final Long oldValue;
    private final Long newValue;
    private final Instant changedAt;
    // This is the ID of the user who performed the …
Run Code Online (Sandbox Code Playgroud)

spring amazon-sqs jackson spring-cloud spring-cloud-aws

6
推荐指数
1
解决办法
5765
查看次数

关闭 Spring Boot AWS 自动配置

我正在使用spring-cloud-aws-autoconfigure:2.1.0.RELEASE连接到AWS。但是,当应用程序在 AWS 以外的环境中运行时,我不希望进行自动配置。

我尝试按照此处此处建议的java 配置类以及spring.autoconfigure.excludesyml 文件中的属性关闭自动配置,如下所示:

spring:
  autoconfigure:
    exclude:
      - org.springframework.cloud.aws.autoconfigure.context.ContextCredentialsAutoConfiguration
      - org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration
      - org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration
      - org.springframework.cloud.aws.autoconfigure.messaging.MessagingAutoConfiguration
Run Code Online (Sandbox Code Playgroud)

但这些解决方案似乎都不起作用。自动配置仍然发生,因此应用程序无法启动。

java spring-boot spring-cloud-aws

6
推荐指数
2
解决办法
8236
查看次数

org.springframework.cloud VS io.awspring.cloud

这些 Maven 组 ID 之间有什么区别?我在互联网上看到一些使用 org.springframework.cloud 和其他使用 io.awspring.cloud 的示例,其中一个比另一个更受欢迎吗?

amazon-web-services spring-boot spring-cloud-aws

6
推荐指数
1
解决办法
2467
查看次数

哪个 Spring Cloud AWS 版本应与 Spring Boot 3 一起使用?

我正在尝试SqsListener工作,但 Spring Boot 3 做不到,它根本没有收到任何东西。当我将 Spring Boot 版本更改回 2.X 时,一切都工作正常。我使用的是 Spring Cloud 2.4.2 版本:

...
    <dependency>
            <groupId>io.awspring.cloud</groupId>
            <artifactId>spring-cloud-starter-aws-messaging</artifactId>
        </dependency>
</dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.awspring.cloud</groupId>
                <artifactId>spring-cloud-aws-dependencies</artifactId>
                <version>2.4.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

您能给我指出正确的 spring cloud 版本吗?我需要使用里程碑版本吗?

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

6
推荐指数
1
解决办法
1万
查看次数

sqs 监听器的调度程序

我正在使用基于 @sqslistener 注释的方法从 aws 队列中读取。我已经成功设置它,并且所有各种配置都按预期工作。

现在我想要实现的是 sqslistener 仅在一天中的特定时间段(当我期待队列中的消息时)侦听队列。例如,每天上午 9 点至下午 3 点。因此,从下午 3 点到第二天上午 9 点停止收听并重复此操作。是否有可用于实现此目的的配置?

我查看了文档,但找不到与此相关的任何内容。

任何指示将不胜感激。

谢谢

java amazon-sqs spring-cloud-aws

5
推荐指数
0
解决办法
694
查看次数

&lt;aws-messaging:annotation-driven-queue-listener /&gt;的基于Java的配置版本是什么?

根据最新版本的Spring Cloud AWS文档(http://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html),第5.2.3节指出,您需要QueueMessageHandler使用以下配置在传统的Spring XML配置中:

<aws-messaging:annotation-driven-queue-listener />
Run Code Online (Sandbox Code Playgroud)

您如何使用更现代的基于Java的配置来进行配置?

java spring spring-boot spring-cloud spring-cloud-aws

5
推荐指数
1
解决办法
457
查看次数

使用AWS参数存储的Spring Cloud

Spring Cloud AWS或Spring Cloud Config与AWS Parameter Store之间是否存在任何集成?

我刚看到这个问题:https://github.com/spring-cloud/spring-cloud-aws/issues/207

但仅此而已.

amazon-web-services spring-cloud spring-cloud-config spring-cloud-aws

5
推荐指数
1
解决办法
1437
查看次数