Как связать типы сообщений с потребителями Kafka в одной группе потребителей? - PullRequest
1 голос
/ 08 июня 2019

У меня есть производитель producer, который хочет отправить some_persistent_message на dbConsumer и some_Notification_message на notificationConsumer

Producer1 отправляет сообщение с ключами

db_key: some_persistent_message

notify_key:some_Notifiction_message

На стороне потребителя у меня есть группа потребителей App1_group с двумя потребителями dbConsumer и notificationConsumer

enter image description here

При этомна данный момент мой dbConsumer всегда получает сообщения some_Notification_message, потому что мой потребитель в конечном итоге владеет определенным разделом, который всегда получает notify_key:some_Notifiction_message

Возможно ли отправить some_persistent_message на dbConsumer и some_Notification_message до notification_consumer?

Ответы [ 2 ]

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

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

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

Широко различное количество сообщений может также мешать обработке двух типов сообщений в хронологическом порядке с двумя различными группами потребителей.

0 голосов
/ 09 июня 2019

Лучший способ - просто использовать KafkaConsumer # assign () и указать правильные разделы.

В качестве альтернативы, если у вас все в порядке с двойным вводом / выводом, просто используйте две группы потребителей- оба потребителя получат все сообщения, и в логике потребителя вы можете просто пропустить сообщения нежелательного типа.

...