问题标签 [spring-cloud-aws]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - Spring Integration + SQS - 重试异常不起作用
我正在将 Spring Integration 与 AWS SQS 队列集成。
当我用注释的方法 @ServiceActivator
引发异常时,我遇到了问题。在这种情况下,消息似乎无论如何都会从队列中删除。我已配置MessageDeletionPolicy
为ON_SUCCESS
in SqsMessageDrivenChannelAdapter
。
这是我的频道/适配器配置 https://github.com/sdusza1/spring-integration-sqs/blob/master/src/main/java/com/example/demo/ChannelConfig.java
我已经尝试使用@SqsListener
注释做同样的事情,并且消息没有按预期删除。
我在这里创建了一个迷你 Spring Boot 应用程序来演示这个问题: https ://github.com/sdusza1/spring-integration-sqs
请帮忙 :)
spring - 使用 PCF 服务代理配置自定义命名的 SQS 队列
我正在尝试创建一个新队列,但是在使用时
AWS 中的队列名称是自动分配的,只是一个由随机字母和数字组成的 id。
这在使用普通的 java 客户端时很好。但是,我们想使用spring-cloud-aws-messaging
( @SqsListener
annotation),因为它为我们提供了开箱即用的删除策略,以及一种扩展可见性的方法,以便我们可以轻松地实现重试。
注解上的队列名是声明的,所以我们不能在应用程序上读取PCF注入的VCAP_SERVICE环境变量后动态改变它。
我们能想到的唯一替代方法是使用反射来设置注释值的可访问性,并将值设置为 VCAP_SERVICE 上的名称,但这很讨厌,我们希望尽可能避免它。
有没有办法将队列的名称更改为特定于创建的名称?这表明这是可能的,如下所示:
但是,这不起作用。它返回:
不正确的用法:为 -c 标志提供的配置无效。请提供有效的 JSON 对象或包含有效 JSON 对象的文件的路径。
如何在创建队列时设置名称?或者实现我的最终目标的唯一方法是使用反射?
编辑:正如 Daniel Mikusa 所指出的,双引号不是真正的双引号,这导致了错误。该命令现在成功,但它不会创建具有预期名称的队列。我现在想知道是否需要设置此名称bind-service
。该命令也有一个-c
选项,但我找不到任何文档来支持哪些参数可用于aws-sqs
服务。
amazon-web-services - Spring cloud aws中的轮询线程行为
我对轮询线程的行为方式有一点怀疑。
让我们假设我每次轮询接收的 maxNumberOfMessages 为 10。我们使用的是 DEFAULT_WAIT_TIME = 20 秒。我想知道它在下面提到的不同场景中的表现。
- 如果队列中有 5-6 条消息。那么能退多少呢?轮询线程会等待一段时间以获取更多消息吗?
- 如果队列中没有消息,它会等到收到一条消息还是会等待更多?
- 如果队列中有超过 10 条消息,那么它将如何表现?
amazon-dynamodb - Spring Aws Kinesis Binder ProvisionedThroughputExceededException,同时在批处理模式下消费消息
我正在使用批处理模式从运动流中提取记录。我们正在使用 spring aws kinesis binder。
大多数时候,我们无法从流中提取消息。只有有时我们能够从流中提取消息。
我的配置如下所示
我的配置
当我启用调试日志记录时,我可以看到这个异常
我尝试将批量大小减少为 150,并将 idleBetweenPools 减少到 1 秒。我还将 readCapacity 和 writeCapacity 更新为 10。但同样的错误。
从 AWS 控制台,我可以看到 SpringIntegrationLockRegistry 已超过读取阈值。
你能帮助我们了解什么是错的。
它有时有效,有时无效。
spring-cloud-stream - 没有关于 kinesis 流暂停消息 1 秒的记录
我正在使用 spring kinesis binder 以批处理模式消费消息
有时我无法使用流中的消息。这并非一直发生
[ShardConsumer{shardOffset=KinesisShardOffset{iteratorType=AFTER_SEQUENCE_NUMBER, sequenceNumber='49594358705006691330463332232285735104253344290967650306', 时间戳=null, 流='mystream-1', shard='00000}']=false}的记录在序列号 [null] 上。暂停消费 [1000] 毫秒。
我不断收到此消息,并且消息没有被消耗。
我的 Conf 如下所示
流中有消息,但我不会间歇性地消费。你能帮忙吗?
spring-cloud-stream - Spring Kinesis Binder 快速填充堆空间导致频繁的 GC 刷新并减慢消息处理
我的应用程序从一个流中消费,然后将消息推送到三个流上
粘合剂:
配置:
我们推送的数据流在每条记录中大约 800kb。我们看到 AbstractAwsMessageHandler/AmazonKinesisAsyncClient 中有更多数据导致非常频繁的 GC 刷新。
我们使用的是 1.0.0.RELEASE 版本的 Binder
你能帮忙吗?
java - 使用实例元数据配置 spring cloud config 以便可以使用 IAM 角色从 CodeCommit 克隆
我正在尝试在 ECS 生成的 docker 容器中运行 spring 云配置应用程序。我在正确设置时遇到问题,以便使用元数据从 CodeCommit 克隆 git repo
我有以下设置
pom.xml 依赖项
应用程序.yml
在 docker 日志中,我可以找到以下内容
如果我正确理解这一点;根据 spring cloud config 文档,当您使用 CodeCommit git url 并且不指定用户名和密码时,它应该自动默认为 AWS Credentials Chain,它具有实例配置文件凭证作为最终选项。
spring-cloud-stream - IdleBetween 池未按指定提取消息
我正在批处理模式下使用消息。我想每 250 毫秒从流中提取 8 条消息。
我已经将大约 100 条消息推送到流中,并且我启动了消费者。
根据配置,我应该每 250 毫秒提取一次消息。但是轮询器不是每 250 毫秒拉一次消息。
我什至根本不处理任何东西。它只是日志。
每条消息之间的时间超过 250 毫秒。我有什么遗漏吗。
spring-cloud-stream - Kinesis Binder 默认读取容量和写入容量在 dynamo db 表上
根据 Spring Aws Kinesis Binder 中的文档,readCapacity 和 writeCapacity 的默认值为 1
readCapacity DynamoDb 表的读取容量。请参阅 Kinesis 预置吞吐量
默认值:1
writeCapacity DynamoDb 表的写入容量。请参阅 Kinesis 预置吞吐量默认值:1
从 Kinesis Client 代码中,我可以看到默认值为 10。
Spring Kinesis Binder 中是否有任何自定义。
编辑
我有读写能力为 40 的 locks 表。
我像这样配置了我的活页夹
我有三个使用这些配置运行的容器。
我看到针对 customLocks 表的 ProvisionedThroughputExceededException。
不确定活页夹是否试图使发电机数据库锁表过载。
spring-integration - 了解 SqsMessageDrivenChannelAdapter 行为
我试图了解SqsMessageDrivenChannelAdapter
解决内存问题的行为。上游系统转储了数千条消息aws-sqs-queue
,所有消息都被立即接收SqsMessageDrivenChannelAdapter
。在 AWS 控制台上,我看不到队列中的任何可用消息。然后SqsMessageProcesser
每 5 秒处理 1 条消息。
这是日志:
2019-05-21 17:28:18 INFO SQSMessageProcessor:88 - --- sqsMessageProcesser 内部--- 2019-05-21 17:28:23 INFO SQSMessageProcessor:88 - --- sqsMessageProcesser 内部--- 2019-05- 21 17:28:28 INFO SQSMessageProcessor:88 - --- sqsMessageProcesser 内部--- 2019-05-21 17:28:33 INFO SQSMessageProcessor:88 --- sqsMessageProcesser 内部--- 2019-05-21 17:28 :38 INFO SQSMessageProcessor:88 - --- 在 sqsMessageProcesser 内--- ...................
这是否意味着在SqsMessageProcesser
每 5 秒处理 1 条消息时,数千条消息被保存在 ? 的(服务器)内存中in-channel
?
每个数据库事务大约需要 5 秒,目前我们在 PRD 上面临“内存不足”问题。
如果我在QueueChannel
andsetMaxNumberOfMessages
上设置容量会有帮助SqsMessageDrivenChannelAdapter
吗?如果是,是否有计算这些值的标准方法?