Итак, я новичок в Кафке и некоторое время читал об этом. Я нашел эту информацию на слиянии.
https://docs.confluent.io/current/streams/architecture.html
Так что я понял из этого, скажем, у меня есть topi c с именем plain_text, куда я просто отправляю куча записей в виде простого текста, и у меня есть только один брокер с одним topi c и одним разделом. Теперь я запускаю 2 потребительских экземпляра ConsumerA и ConsumerB. Поскольку количество разделов меньше, чем число потребителей, только один из потребителей должен активно потреблять сообщения, оставляя другого в нерабочем состоянии. Пожалуйста, исправьте меня, если я ошибаюсь.
Я запустил тест с использованием скриптов kafka-console-
Запустите кластер zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
Запустите брокер Kafka на localhost: 9092
bin/kafka-server-start.sh config/server.properties
создать файл topi c plain_text с одним разделом
bin/kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 1 \
--partitions 1 \
--topic plain_text
запустить производителя
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic plain_text
запустить 2 потребителей, принадлежащих одному group (выполните одну и ту же команду дважды)
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic plain_text \
--formatter kafka.tools.DefaultMessageFormatter \
--property print.key=true \
--property print.value=true \
--property group.id=test_group \
Таким образом, один из двух потребителей должен владеть этим единственным разделом (снова, пожалуйста, исправьте меня, если я ошибаюсь), но все, что я создаю на консоли производителя, видно на обе потребительские консоли. Почему оба потребителя используют сообщения из одного раздела. Есть ли что-то, чего мне не хватает или применяются другие правила для скриптов kafka-console- *.