Производитель и потребитель Kafka в отдельном экземпляре EC2 - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть 2 экземпляра ec2, один для брокера Kafka, а другой для потребителя Kafka.Могу ли я узнать, как соединить оба экземпляра ec2 для связи друг с другом.Если я создаю сообщение в моем брокере, мне нужно передать его потребителю.

По сути, я ищу ту часть конфигурации, где мне нужно предоставить информацию о потребителе в экземпляре брокера ec2 и наоборот (в зависимости от того, как это работает).Нужно ли мне использовать API или что-то еще?

Я пробовал в кластере с одним узлом, и это сработало.

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

Если вы используете Kafka на разных машинах, вам необходимо правильно настроить слушателей.Эта статья объясняет, как: https://rmoff.net/2018/08/02/kafka-listeners-explained/

0 голосов
/ 23 ноября 2018

где мне нужно предоставить информацию о потребителе в брокере

Брокеры не передают сообщения потребителям, поэтому вы не передадите информацию для потребителя ни одному брокеру

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

0 голосов
/ 23 ноября 2018

Неважно, размещаете ли вы своего брокера в ec-2 или где-либо еще, если он доступен для потребителя.

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

 Properties props = new Properties();
 props.put("bootstrap.servers", "YOUR_KAFKA_BROKER_ADDRESS");
 props.put("group.id", "test");
 props.put("enable.auto.commit", "true");
 props.put("auto.commit.interval.ms", "1000");
 props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
 props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
 KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
 consumer.subscribe(Arrays.asList("foo", "bar"));
 while (true) {
     ConsumerRecords<String, String> records = consumer.poll(100);
     for (ConsumerRecord<String, String> record : records)
         System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
 }

https://kafka.apache.org/10/javadoc/?org/apache/kafka/clients/consumer/KafkaConsumer.html

...