Весенний облачный поток с кинезисом: AmazonDynamoDBLockClient генерирует исключения в цикле - PullRequest
1 голос
/ 27 июня 2019

У нас есть довольно простое приложение spring-cloud-stream, которое читает из очереди AWS-Kinesis. Это сработало некоторое время без проблем. У него только небольшая рабочая нагрузка.

Сегодня мы получаем более 100 исключений в секунду. (Это больше, чем у нас есть пользователи в этом приложении, поэтому оно выглядит как бесконечный цикл повторных попыток)

WARN --- [s-shard-locks-1] c.a.s.d.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
...
at org.springframework.integration.aws.lock.DynamoDbLockRegistry$DynamoDbLock.doLock(DynamoDbLockRegistry.java:504) 

Код довольно прост:

    @StreamListener(Channels.OUR_CHANNEL)
fun consumeThing(Thing: MutableMap<Any, Any>) {
    log.info("thing received: {}.", thing)
    // some methods to write it to our own datbase
}

У нас есть только базовая конфигурация:

spring:
  cloud:
    stream:
      defaultBinder: kinesis
      bindings:
        thingsChannel:
          group: aGroup
          destination: aDestionation

В AWS-Console мы видим предупреждение о том, что в DynamoBD SpringIntegrationLockRegistry превышает емкость чтения. Мы ставим это от 1 до 10, но все еще есть проблема.

Как настроить весеннее облако данных и kinesis так, чтобы оно было более устойчивым, и не повторять его без некоторого времени ожидания?

1 Ответ

1 голос
/ 27 июня 2019

Пожалуйста, обратите внимание на возможные варианты LockRegistry: 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

Похоже, что политика в таблице в Консоли AWS была изменена. Возможно, вам придется пересмотреть некоторые тайм-ауты и возможности чтения-записи для этой таблицы или для клиента, которого я упомянул.

Вы можете узнать больше о DynamoDB Lock Client подробнее здесь , который уже находится вне контроля Spring Cloud Stream. Кстати, это название проекта, а не data ...

...