В целом в кафке вообще не гарантируется отсутствие дублей и можно всегда создать ситуацию с повторной вычиткой того же сообщения, если оно не закоммичено
Кафка это не про дедупликацию
А так в целом - да, потому что у вас консьюмеры в группе читают разный набор партиций.
Просто вот у меня есть user_registration_event, и есть нескл инстансов emailNotificationService и нескл инстансов userStatisticsService, они все подписаны на user_registration_event. И нужно, чтобы все ивенты дуплицировались 2 раза, чтобы два сервиса могли обработать каждое сообщение, но при этом только 1 инстанс каждого сервиса мог обработать одно сообщение. Это же возможно?
Те, кому нужен дубль должны иметь отличающиеся группы, а все кому нужен один набор сообщений - одну и туже (между собой) группу
То есть если будет 4 консьюмера сервиса1 и 4 консьюмера сервиса2. Мне нужно 4 партиции топика. И на каждую партицию будет 1 инстанс сервиса1 и 1 инстанс сервиса2?
у тебя так и будет происходить у тебя есть сущность - топик, в нем user_registration_event сообщение в кафке сообщения для каждой группы не дублируются, вместо этого у каждой группы свои оффсеты при чтении топика первая consumer group - это emailNotificationService и только 1 инстанс этого сервиса в рамках своей группы получит сообщение из соответствующей партиции вторая consumer group - это userStatisticsService и только 1 инстанс этого сервиса в рамках своей группы получит это же сообщение из соответствующей партиции число партициий бери как минимально как число инстансов твоих сервисов или больше
Понятно, спасибо большое
Обсуждают сегодня