Amazon-Kinesis: поставьте запись на каждый сегмент

У меня есть поток Amazon Kinesis, состоящий из нескольких сегментов. Количество осколков и, следовательно, количество потребителей не является константой.

Существует нечастый тип события, которое я хочу транслировать каждому потребителю в потоке.

Есть ли у продюсера способ транслировать запись, то есть обнаружить осколки и поставить запись на каждый из них?


person Chris    schedule 19.01.2016    source источник
comment
Слово потребитель в вашем вопросе расплывчато. Вы имеете в виду каждое потребительское приложение или каждый рабочий поток, прослушивающий сегмент в одном приложении?   -  person az3    schedule 20.01.2016
comment
У меня есть одно приложение и несколько экземпляров этого приложения. скажем, 4, и я хочу, чтобы одно и то же сообщение использовалось 4 экземплярами, как я могу добиться этого в потоке данных kinesis   -  person Rahul Singh    schedule 12.05.2020


Ответы (1)


Ты можешь сделать это! Что-то вроде...

Хитрость в том, чтобы использовать параметр «ExplicitHashKey».

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

Затем вы можете позвонить

aws kinesis describe-stream --stream-name name-of-your-stream

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

Затем вам нужно только отправить свои данные на каждый сегмент (с помощью PutRecord или PutRecords), и все готово.

К сожалению, «трансляции» нет, но вы можете легко написать Lambda для отправки одних и тех же данных на каждый шард, используя параметр ExplicitHashKey.

Другое решение — использовать отдельные потоки и записывать в каждый из них.

person Mike    schedule 22.05.2018