问题标签 [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.

0 投票
1 回答
2200 浏览

amazon-web-services - Spring Integration + SQS - 重试异常不起作用

我正在将 Spring Integration 与 AWS SQS 队列集成。

当我用注释的方法 @ServiceActivator引发异常时,我遇到了问题。在这种情况下,消息似乎无论如何都会从队列中删除。我已配置MessageDeletionPolicyON_SUCCESSin 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

请帮忙 :)

0 投票
0 回答
187 浏览

spring - 使用 PCF 服务代理配置自定义命名的 SQS 队列

我正在尝试创建一个新队列,但是在使用时

AWS 中的队列名称是自动分配的,只是一个由随机字母和数字组成的 id。

这在使用普通的 java 客户端时很好。但是,我们想使用spring-cloud-aws-messaging( @SqsListenerannotation),因为它为我们提供了开箱即用的删除策略,以及一种扩展可见性的方法,以便我们可以轻松地实现重试。

注解上的队列名是声明的,所以我们不能在应用程序上读取PCF注入的VCAP_SERVICE环境变量后动态改变它。

我们能想到的唯一替代方法是使用反射来设置注释值的可访问性,并将值设置为 VCAP_SERVICE 上的名称,但这很讨厌,我们希望尽可能避免它。

有没有办法将队列的名称更改为特定于创建的名称?表明这是可能的,如下所示:

但是,这不起作用。它返回:

不正确的用法:为 -c 标志提供的配置无效。请提供有效的 JSON 对象或包含有效 JSON 对象的文件的路径。

如何在创建队列时设置名称?或者实现我的最终目标的唯一方法是使用反射?

编辑:正如 Daniel Mikusa 所指出的,双引号不是真正的双引号,这导致了错误。该命令现在成功,但它不会创建具有预期名称的队列。我现在想知道是否需要设置此名称bind-service。该命令也有一个-c选项,但我找不到任何文档来支持哪些参数可用于aws-sqs服务。

0 投票
1 回答
110 浏览

amazon-web-services - Spring cloud aws中的轮询线程行为

我对轮询线程的行为方式有一点怀疑。

让我们假设我每次轮询接收的 maxNumberOfMessages 为 10。我们使用的是 DEFAULT_WAIT_TIME = 20 秒。我想知道它在下面提到的不同场景中的表现。

  1. 如果队列中有 5-6 条消息。那么能退多少呢?轮询线程会等待一段时间以获取更多消息吗?
  2. 如果队列中没有消息,它会等到收到一条消息还是会等待更多?
  3. 如果队列中有超过 10 条消息,那么它将如何表现?
0 投票
1 回答
660 浏览

amazon-dynamodb - Spring Aws Kinesis Binder ProvisionedThroughputExceededException,同时在批处理模式下消费消息

我正在使用批处理模式从运动流中提取记录。我们正在使用 spring aws kinesis binder。

大多数时候,我们无法从流中提取消息。只有有时我们能够从流中提取消息。

我的配置如下所示

我的配置

当我启用调试日志记录时,我可以看到这个异常

我尝试将批量大小减少为 150,并将 idleBetweenPools 减少到 1 秒。我还将 readCapacity 和 writeCapacity 更新为 10。但同样的错误。

从 AWS 控制台,我可以看到 SpringIntegrationLockRegistry 已超过读取阈值。

你能帮助我们了解什么是错的。

它有时有效,有时无效。

0 投票
1 回答
83 浏览

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 如下所示

流中有消息,但我不会间歇性地消费。你能帮忙吗?

0 投票
1 回答
145 浏览

spring-cloud-stream - Spring Kinesis Binder 快速填充堆空间导致频繁的 GC 刷新并减慢消息处理

我的应用程序从一个流中消费,然后将消息推送到三个流上

粘合剂:

配置:

我们推送的数据流在每条记录中大约 800kb。我们看到 AbstractAwsMessageHandler/AmazonKinesisAsyncClient 中有更多数据导致非常频繁的 GC 刷新。

我们使用的是 1.0.0.RELEASE 版本的 Binder

你能帮忙吗?

0 投票
0 回答
166 浏览

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,它具有实例配置文件凭证作为最终选项。

0 投票
1 回答
59 浏览

spring-cloud-stream - IdleBetween 池未按指定提取消息

我正在批处理模式下使用消息。我想每 250 毫秒从流中提取 8 条消息。

我已经将大约 100 条消息推送到流中,并且我启动了消费者。

根据配置,我应该每 250 毫秒提取一次消息。但是轮询器不是每 250 毫秒拉一次消息。

我什至根本不处理任何东西。它只是日志。

每条消息之间的时间超过 250 毫秒。我有什么遗漏吗。

0 投票
1 回答
256 浏览

spring-cloud-stream - Kinesis Binder 默认读取容量和写入容量在 dynamo db 表上

根据 Spring Aws Kinesis Binder 中的文档,readCapacity 和 writeCapacity 的默认值为 1

https://github.com/spring-cloud/spring-cloud-stream-binder-aws-kinesis/blob/master/spring-cloud-stream-binder-kinesis-docs/src/main/asciidoc/overview.adoc#锁定注册表

readCapacity DynamoDb 表的读取容量。请参阅 Kinesis 预置吞吐量

默认值:1

writeCapacity DynamoDb 表的写入容量。请参阅 Kinesis 预置吞吐量默认值:1

从 Kinesis Client 代码中,我可以看到默认值为 10。

https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/dynamodb/TableConstants.java

Spring Kinesis Binder 中是否有任何自定义。

编辑

我有读写能力为 40 的 locks 表。

我像这样配置了我的活页夹

我有三个使用这些配置运行的容器。

我看到针对 customLocks 表的 ProvisionedThroughputExceededException。

不确定活页夹是否试图使发电机数据库锁表过载。

0 投票
1 回答
200 浏览

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 上面临“内存不足”问题。

如果我在QueueChannelandsetMaxNumberOfMessages上设置容量会有帮助SqsMessageDrivenChannelAdapter吗?如果是,是否有计算这些值的标准方法?