卡夫卡生产者和消费者在单独的EC2实例中

时间:2018-11-23 04:41:45

标签: apache-kafka kafka-consumer-api kafka-producer-api

我有2个ec2实例,一个用于Kafka经纪人,另一个用于Kafka Consumer。我可以知道如何将两个ec2实例相互连接以进行通信。如果我在经纪人中产生一条消息,则需要在消费者中得到它。

基本上,我正在寻找配置的那部分,我需要在broker ec2实例中提供消费者信息,反之亦然(无论哪种方式)。我需要使用一些api或其他东西吗?

我已经在单节点群集中尝试过,并且可以正常工作。

3 个答案:

答案 0 :(得分:0)

您可以在ec-2或其他地方托管经纪人,只要消费者可以访问它就没关系。

使用StringDeserializer的键和值的Java中的样本使用者。如果要从Java程序访问,则需要使用KafkaConsumer API

 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

答案 1 :(得分:0)

如果要在多台计算机上使用Kafka,则需要正确配置侦听器。本文介绍了如何:https://rmoff.net/2018/08/02/kafka-listeners-explained/

答案 2 :(得分:0)

  

我需要在经纪人中提供消费者信息的地方

经纪人不会向消费者发送消息,因此您不会将消费者的信息提供给任何经纪人

假设网络设置配置正确,任何针对单个代理的代码都可以使用多个代码