Несколько потребителей Kinesis Stream с использованием клиентской библиотеки Kinesis (KCL 2.x) - PullRequest
1 голос
/ 14 июля 2020

У меня есть приложение, которое использует KCL 2.x для получения записей из Kinesis, данные, представленные в разных сегментах потока, находятся в другом формате, и я хочу обрабатывать их отдельно, используя разных потребителей KCL с разными конфигурациями. Например, если у меня есть 3 сегмента в потоке Kinesis, я сгенерирую 3 разных потребителей с разными конфигурациями для разных сегментов, то есть по 1 потребителю на каждый сегмент. Проблема, с которой я сталкиваюсь при создании нескольких потребителей, заключается в том, что если я настраиваю 3 разных потребителя с помощью кода java, тогда любой из них использует блокировку аренды для всех сегментов, а другие потребители не могут получить эту аренду. Например, общее количество сегментов: 3, общее количество настроенных потребителей: 3,

Application logs :

[2020-07-13 18:55:50,549] (LeaseCoordinator-0000) INFO Worker application-test-stream saw 3 total leases, 3 available leases, 1 workers. Target is 3 leases, I have 0 leases, I will take 3 leases (software.amazon.kinesis.leases.dynamodb.DynamoDBLeaseTaker:397)
[2020-07-13 18:55:50,549] (LeaseCoordinator-0002) INFO Worker application-test-stream saw 3 total leases, 3 available leases, 1 workers. Target is 3 leases, I have 0 leases, I will take 3 leases (software.amazon.kinesis.leases.dynamodb.DynamoDBLeaseTaker:397)
[2020-07-13 18:55:50,554] (Thread-22) INFO Initialization complete. Starting worker loop. (software.amazon.kinesis.coordinator.Scheduler:238)
[2020-07-13 18:55:50,842] (LeaseCoordinator-0004) INFO Worker application-test-stream saw 3 total leases, 3 available leases, 1 workers. Target is 3 leases, I have 0 leases, I will take 3 leases (software.amazon.kinesis.leases.dynamodb.DynamoDBLeaseTaker:397)
[2020-07-13 18:55:51,452] (LeaseCoordinator-0000) INFO Worker application-test-stream successfully took 3 leases: shardId-000000000002, shardId-000000000001, shardId-000000000000 (software.amazon.kinesis.leases.dynamodb.DynamoDBLeaseTaker:203)
[2020-07-13 18:55:51,457] (LeaseCoordinator-0002) INFO Worker application-test-stream failed to take 3 leases: shardId-000000000002, shardId-000000000001, shardId-000000000000 (software.amazon.kinesis.leases.dynamodb.DynamoDBLeaseTaker:208)
[2020-07-13 18:55:51,757] (LeaseCoordinator-0004) INFO Worker application-test-stream failed to take 3 leases: shardId-000000000002, shardId-000000000001, shardId-000000000000 (software.amazon.kinesis.leases.dynamodb.DynamoDBLeaseTaker:208)

Как я могу настроить моего потребителя KCL, чтобы потребитель брал в аренду только выделенный ему сегмент.

1 Ответ

1 голос
/ 25 июля 2020

Как правило, потребитель Kinesis должен быть потребителем уровня потока - например, каждый потребитель потребляет все сегменты в потоке. В вашем случае вы потенциально можете игнорировать / пропускать записи в вашем процессоре записи, которые вам не нужны, в зависимости от шарда. Не существует готовой настройки конфигурации, позволяющей использовать только определенные c фрагменты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...