Разрешить использование одного и того же сообщения разными экземплярами одного и того же сервиса из раздела Kafka - PullRequest
0 голосов
/ 21 октября 2019

У меня есть несколько экземпляров одного и того же сервиса, подписанного на тему Kafka. Производитель публикует 1 сообщение в теме. Я хочу, чтобы это сообщение использовалось всеми экземплярами. Когда экземпляр запущен, сообщения следует читать с конца темы / разделов. Я не хочу, чтобы экземпляры получали сообщения, которые были опубликованы до запуска службы (но это не будет большой проблемой, если служба обрабатывает некоторые старые сообщения). Я не хочу, чтобы экземпляры теряли сообщения, если экземпляры на какое-то время отключаются от Kafka или Kafka не работает, что означает, что мне нужно периодически фиксировать смещения. Сообщение может быть обработано дважды, это не большая проблема.

  1. Это лучший способ архивации описанного поведения: создать новый идентификатор группы Кафки, используя новый Guid или отметку времени для каждого экземпляра. каждый раз, когда запускается экземпляр?

  2. Каковы недостатки подхода, описанного в пункте 1 выше?

1 Ответ

1 голос
/ 21 октября 2019

Достаточно сделать две вещи. Во-первых, каждый экземпляр службы должен иметь свой собственный group.id. Это гарантирует, что каждое из них прочитает все опубликованные сообщения и получит опубликованные сообщения после повторного подключения. Этот идентификатор для каждого экземпляра, и нет необходимости восстанавливать его при запуске. Во-вторых, каждый экземпляр должен иметь свойство auto.offset.reset=latest, которое также является значением по умолчанию. Это гарантирует, что потребитель не будет читать сообщения, которые были опубликованы до первого запуска экземпляра.

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

...