我已经spring-cloud-starter-aws-parameter-store-config按照spring 文档中的说明添加了依赖项。现在,对于单元测试,我想禁用参数存储配置。但是做不到。
我尝试在 test/application.properties 中设置以下属性
 aws.paramstore.enabled=false
还试图排除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。
我spring-cloud-aws-messaging在 Spring Boot 项目中使用。
我在 AWS 中手动创建了 SQS 队列。
它的使用方式如下:
@SqsListener("${sqs.name.incoming}")
public void listen(String message) {
    ...
}
它工作正常。但是当我在 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] …java spring-boot spring-messaging spring-cloud spring-cloud-aws
我想在我的Springboot应用程序中开始使用指标,我也想将它们发布给我的亚马逊云观察
我知道使用Springboot我们可以激活弹簧执行器,它提供内存指标并将它们发布到/ metrics端点.
我偶然发现Spring-cloud似乎有一些lib定期将这些指标发布到Cloudwatch,但我不知道如何设置它们?绝对有0个如何使用它的例子.
任何人都可以解释将指标发送到cloudwatch的步骤是什么?
我需要修改 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
    }
}
这是 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 …我正在使用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
但这些解决方案似乎都不起作用。自动配置仍然发生,因此应用程序无法启动。
这些 Maven 组 ID 之间有什么区别?我在互联网上看到一些使用 org.springframework.cloud 和其他使用 io.awspring.cloud 的示例,其中一个比另一个更受欢迎吗?
我正在尝试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>
您能给我指出正确的 spring cloud 版本吗?我需要使用里程碑版本吗?
我正在使用基于 @sqslistener 注释的方法从 aws 队列中读取。我已经成功设置它,并且所有各种配置都按预期工作。
现在我想要实现的是 sqslistener 仅在一天中的特定时间段(当我期待队列中的消息时)侦听队列。例如,每天上午 9 点至下午 3 点。因此,从下午 3 点到第二天上午 9 点停止收听并重复此操作。是否有可用于实现此目的的配置?
我查看了文档,但找不到与此相关的任何内容。
任何指示将不胜感激。
谢谢
根据最新版本的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 />
您如何使用更现代的基于Java的配置来进行配置?
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
spring-cloud-aws ×10
spring-boot ×7
java ×6
spring-cloud ×5
amazon-sqs ×3
spring ×3
jackson ×1
metrics ×1
unit-testing ×1