카프카 설치 로컬 윈도우 환경

1.  최신 Kafka 버전을 다운로드 하고 압축을 풉니다.

kafka_2.13-3.4.0.tgz의 압축을 풉니다.

2. 카프카 서비스 시작

참고: 로컬 환경에 Java 8+가 설치되어 있어야 합니다.

1 사육사 서비스 시작

cd kafka_2.13-3.4.0/bin/windows
zookeeper-server-start.bat ../../config/zookeeper.properties

2. Kafka 브로커 서비스 시작

cd kafka_2.13-3.4.0/bin/windows
kafka-server-start.bat ../../config/server.properties

자, 이제 기본 Kafka 환경이 생겼습니다.

3. 메시지를 저장할 주제 만들기


KAFKA는 여러 시스템에서 이벤트(문서의 레코드 또는 메시지라고도 함)를 읽고 쓰고 저장하고 처리할 수 있는 분산 이벤트 스트리밍 플랫폼입니다.

활동의 예로는 결제 거래, 휴대폰의 지리적 위치 업데이트, 배송 주문, IoT 장치 또는 의료 장치의 센서 측정 등이 있습니다. 이러한 이벤트는 주제에 구성되고 저장됩니다. 매우 단순화된 주제는 파일 시스템의 폴더와 같고 이벤트는 해당 폴더의 파일입니다.

따라서 첫 번째 이벤트를 작성하기 전에 주제를 작성해야 합니다. 다른 터미널 세션을 열고 다음을 실행합니다.

kafka-topics.bat --create --topic quickstart-events --bootstrap-server localhost:9092

결과:

Created topic quickstart-events.

Kafka의 모든 명령줄 도구에는 추가 옵션이 있습니다. 사용 정보를 표시하려면 인수 없이 Kafka-Topics.sh 명령을 실행합니다. 예를 들어 새 항목에 대한 파티션 수와 같은 세부 정보도 표시할 수 있습니다.

kafka-topics.bat --describe --topic quickstart-events --bootstrap-server localhost:9092

결과

Topic: quickstart-events        TopicId: iQ9QVKwkQ1epRjA-BnvxvA PartitionCount: 1       ReplicationFactor: 1    Configs:
        Topic: quickstart-events        Partition: 0    Leader: 0       Replicas: 0     Isr: 0

4. 주제에 메시지 쓰기

Kafka 클라이언트는 쓰기(또는 읽기) 이벤트를 위해 네트워크를 통해 Kafka 브로커와 통신합니다. 일단 수신하면 브로커는 필요한 기간 동안 내구성 있고 내구성 있는 방식으로 활동을 저장합니다.

콘솔 생산자 클라이언트를 실행하여 주제에 일부 이벤트를 씁니다. 기본적으로 입력하는 줄마다 주제에 별도의 이벤트가 기록됩니다.

kafka-console-producer.bat --topic quickstart-events --bootstrap-server localhost:9092
This is my first event
This is my second event

CTRL-C를 사용하여 언제든지 생산자 클라이언트를 중지할 수 있습니다.

Java는 메시지 전송을 구현합니다.

	Properties props = new Properties();
	props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
	props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,org.apache.kafka.common.serialization.StringSerializer.class);
	props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, org.apache.kafka.common.serialization.StringSerializer.class);

	KafkaProducer producer = new KafkaProducer(props);

	try {
	    for (int i =0 ; i <100; i++) {
		String key = "key"+i;
		String message = "message"+i;

		ProducerRecord<Object, Object> record = new ProducerRecord<>("topic1", key, message);
		try {
		    System.out.println("sending message"+i);
		    producer.send(record);
		} catch(SerializationException e) {
		    e.printStackTrace();
		}
	    }
	}finally {
	    producer.flush();
	    producer.close();
	}

5. 메시지 읽기

다른 터미널 세션을 열고 콘솔 소비자 클라이언트를 실행하여 방금 만든 이벤트를 읽습니다.

kafka-console-consumer.bat --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event

CTRL-C를 사용하여 언제든지 소비자 클라이언트를 중지할 수 있습니다.

자유롭게 실험해 보십시오. 예를 들어 생산자 터미널(이전 단계)로 다시 전환하여 추가 이벤트를 작성하고 이러한 이벤트가 소비자 터미널에 즉시 어떻게 표시되는지 확인하십시오.

이벤트는 Kafka에서 유지되므로 원하는 만큼 많은 소비자가 이벤트를 읽을 수 있습니다. 다른 터미널 세션을 열고 이전 명령을 다시 실행하여 쉽게 확인할 수 있습니다.

메시지를 읽는 자바 코드

Properties props = new Properties();

	props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
	props.put(ConsumerConfig.GROUP_ID_CONFIG, "group1");
	props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
	props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
	props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");

	String topic = "topic1";
	final Consumer<String, GenericRecord> consumer = new KafkaConsumer<String, GenericRecord>(props);
	consumer.subscribe(Arrays.asList(topic));


	try {
	    while (true) {
		ConsumerRecords<String, GenericRecord> records = consumer.poll(100);
		for (ConsumerRecord<String, GenericRecord> record : records) {
		    System.out.printf("offset = %d, key = %s, value = %s \n", record.offset(), record.key(), record.value());
		}
	    }
	} finally {
	    consumer.close();
	}

참조

https://kafka.apache.org/quickstart

https://codenotfound.com/spring-kafka-apache-avro-serializer-deserializer-example.html

Supongo que te gusta

Origin blog.csdn.net/keeppractice/article/details/130639312
Recomendado
Clasificación