3
는 Kafka console consumer는에 연결하기 위해 사육사 인스턴스를 지정하도록 요구하는 것 같다카프카 연결은 언제 ZooKeeper 설정이 필요합니까?
./kafka-console-consumer.sh --zookeeper myzk.example.com:2181 --topic mytopic
그러나 자바 API를 통해 직접 카프카 브로커에 연결을 명확하게 할 수있다 :
public class KafkaClient {
public static void main(String[] args) {
String topic = "mytopic";
Properties props = new Properties();
props.put("bootstrap.servers", "kafka.example.com:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
Callback cb = new Callback() {
@Override
void onCompletion(RecordMetadata rdata, Exception exc) {
if(exc) {
throw exc;
}
}
}
producer.send(new ProducerRecord<String, String>(topic, 'somekey', 'someval'), cb);
producer.close();
}
}
인가 ZK 노드를 지정하지 않고 소비자를 운영 할 수있는 방법이 있습니까? 그렇지 않다면, 왜?