根据Spring Aws Kinesis Binder中的留档,读取容量和写入容量的默认值为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#lockregistry
readCapacity DynamoDb表的读取容量。请参阅运动配置吞吐量
默认值: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动觉活页夹有定制吗。
编辑
我有读和写容量为40的锁表。
我这样配置了活页夹
spring:
cloud:
stream:
kinesis:
binder:
locks:
table: customLocks
readCapacity: 5
writeCapacity: 2
checkpoint:
table: customCheckPoints
readCapacity: 5
writeCapacity: 2
bindings:
inputone:
consumer:
listenerMode: batch
idleBetweenPolls: 500
recordsLimit: 50
inputtwo:
consumer:
listenerMode: batch
idleBetweenPolls: 500
recordsLimit: 50
bindings:
inputone:
group: my-group-1
destination: stream-1
content-type: application/json
inputtwo:
group: my-group-2
destination: stream-2
content-type: application/json
我有三个容器运行这些配置。
我看到针对customLocks表的ProvisionedthroughoutExceededexception。
不确定绑定器是否试图使dynamo db locks表过载。
2019-05-05 07:49:52.216 WARN --- [-kinesis-shard-locks-1] ices.dynamodbv2.AmazonDynamoDBLockClient : Could not acquire lock because of a client side failure in talking to DDB
com.amazonaws.services.dynamodbv2.model.ProvisionedThroughputExceededException: The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API. (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ProvisionedThroughputExceededException; Request ID: 94CURTLH858HM3RRELMSB6J817VV4KQNSO5AEMVJF66Q9ASUAAJG)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1632)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1058)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:3452)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:3428)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeGetItem(AmazonDynamoDBClient.java:1789)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.getItem(AmazonDynamoDBClient.java:1764)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBLockClient.readFromDynamoDB(AmazonDynamoDBLockClient.java:997)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBLockClient.getLockFromDynamoDB(AmazonDynamoDBLockClient.java:743)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBLockClient.acquireLock(AmazonDynamoDBLockClient.java:402)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBLockClient.tryAcquireLock(AmazonDynamoDBLockClient.java:567)
at org.springframework.integration.aws.lock.DynamoDbLockRegistry$DynamoDbLock.doLock(DynamoDbLockRegistry.java:504)
at org.springframework.integration.aws.lock.DynamoDbLockRegistry$DynamoDbLock.tryLock(DynamoDbLockRegistry.java:478)
at org.springframework.integration.aws.lock.DynamoDbLockRegistry$DynamoDbLock.tryLock(DynamoDbLockRegistry.java:452)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumerManager.lambda$run$0(KinesisMessageDrivenChannelAdapter.java:1198)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumerManager.dt_access$257(KinesisMessageDrivenChannelAdapter.java)
at java.util.Collection.removeIf(Collection.java:414)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumerManager.run(KinesisMessageDrivenChannelAdapter.java:1191)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
在我看来,容量越大,您在AWS帐户中支付的费用就越多。这种配置确实可以通过应用程序更改。属性:
spring.cloud.stream.kinesis.binder.locks.readCapacity = 10
spring.cloud.stream.kinesis.binder.locks.writeCapacity = 10
这正是Kinesis Binder文档中解释的内容。
我正试图通过spring boot应用程序中的键表连接到Kerberized oracle服务器。我有键盘和krb5。resources下的conf和application下的jaas conf字符串。yml-like: 使用keytab和principal替换的最终结果如下所示: 我已经验证了我可以通过在日志中打印文件内容从资源中读取keytab内容(尽管它是编码的)。 我将此jaas设置为:
我有一个js文件,其中包含一些字典结构,如下例- 文件:read_js。js公司 我想使用typecript在此字典中添加一些数据。如何实现这一点?我尝试了,但这返回文件中存在的所有文本,因此无法读取字典并附加我自己的键值并重新写入js文件。
我应该设计一个组件,该组件应该通过在Java中使用多线程来实现以下任务,因为文件非常大/多,而且任务必须在很短的窗口内完成: 读取多个csv/xml文件并将所有数据保存在数据库中 读取数据库并将数据写入单独的csv文件 我对多线程很陌生 请告诉我您建议在Java或Spring Batch中使用传统的多线程。这里的输入源是多个的,输出源也是多个的。
问题内容: 有一个库可以导出文件,但是我想捕获文件的内容。我想将一个作者传递到库中,并能够读取该作家写到文件中的内容。最终,我想扩充该库以跳过编写此文件的过程。io.Copy或io.Pipe是否可能? 库代码创建一个* File并将此句柄用作io.Writer。我尝试使用io.Copy,但只读取了0个字节。 问题答案: 如果要在写入字节时捕获字节,请使用带有的a 作为第二个写入器。 或在写入时在s
我对微服务最佳实践方法有点困惑。 以下场景: 来自mqtt设备的大量传入消息。一个rest api,客户可以在其中读取消息(大部分只是其中的一部分)。 我的想法是,创建一个用于将消息存储在数据库表中的微服务。还有第二个带有rest api的微服务来读取这些消息。我想这样做,因为缩放问题。(传入的存储部分比读取rest api需要更多的电力) 我读到“完美”的微服务应该是唯一一个在数据库中访问其数据
我需要使用单独的读者/作者MySQL服务器。一个写入程序和一个(或多个)读取复制副本。 最好的方法是什么? 我发现了很多例子: http://www.dragishak.com/?p=307 使用特殊的 JDBC 驱动程序: 用法是: https://stackoverflow.com/a/33169879/1974494 使用Spring < code > AbstractRoutingData