테스트를 위해 로컬 Apache Kafka 인스턴스 설정
Kafka가 무엇인지 모른다면 Confluent에서.
💡 You can follow along by cloning the repo I have created over here.
바이너리 설치
공식 문서에 빠른 시작guide이 있습니다. 솔직히 말해서 Kafka 인스턴스를 내 개발 환경과 상당히 분리하기 위해 로컬에 아무것도 설치하고 싶지 않았기 때문에 아래에서 찾을 수 있는 Docker 방식을 사용했습니다.
도커 방식
이것은 내가 찾은 것 중 가장 쉽고 많은 시간을 절약해 줍니다. 레포를 복제한 후에는 스핀업만 하면 됩니다!
docker-compose up -d
여기에서 무슨 일이 일어나고 있는지 알고 싶다면 docker-compose.yaml 파일을 살펴보겠습니다.
docker-compose.yaml
---
version: '3'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.0.1
container_name: zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
broker:
image: confluentinc/cp-kafka:7.0.1
container_name: broker
ports:
# To learn about configuring Kafka for access across networks see
# https://www.confluent.io/blog/kafka-client-cannot-connect-to-broker-on-aws-on-docker-etc/
- "9092:9092"
depends_on:
- zookeeper
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://broker:29092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
2181
에서 Zookeeper 인스턴스를 가동합니다(즉, 호스트에서 액세스할 수 없음)9092
에서 노출되며 호스트에서 액세스할 수 있습니다. 다른 모든 것은 기본값으로 설정됩니다. 각 환경 변수가 무엇을 하는지 알아보려면 here으로 이동하십시오. 동일한 docker-compose 파일에서 원하는 경우 여러 브로커(Kafka 인스턴스)를 추가할 수 있습니다.
이 접근 방식은 이동 중 또는 CI 환경에서도 테스트를 위해 인스턴스를 시작하려는 경우 매우 유용합니다.
클러스터와 상호 작용
무엇이든 게시하기 전에 설정이 제대로 작동하는지 확인할 수 있도록 소비자를 가동해 보겠습니다. 그렇게 하려면 CLI에서 다음 명령을 실행하십시오.
docker exec --interactive --tty broker \
kafka-console-consumer --bootstrap-server localhost:9092 \
--topic example-topic \
--from-beginning
이제 몇 가지 메시지를 만들고 작동하는 것을 봅시다!
docker exec --interactive --tty broker \
kafka-console-producer --bootstrap-server localhost:9092 \
--topic example-topic
터미널에서 보면 이런 모습입니다. 왼쪽에는
producer
가 있고 오른쪽에는 consumer
가 있습니다.아마도 GUI?
CLI 팬이 아니십니까? 거기에는 많은 도구가 있습니다. 이를 위한 훌륭하고 가벼운 OSS 솔루션을 찾고 싶었습니다. 나는 Tools for Apache Kafka for VS Code으로 진행하기로 결정했습니다.
일단 이동하면 사이드 바에서 상호 작용할 수 있습니다. Kafka의 로고가 있는 새로운 아이콘이 있을 것입니다!
다음은 인스턴스를 찾았을 때의 모습입니다.
producer.kafka
PRODUCER keyed-message
topic: example-topic
key: mykeyq
record content
###
PRODUCER non-keyed-json-message
topic: example-topic
{
"type": "my_test_event-{{random.number}}"
}
consumer.kafka
CONSUMER consumer-group-id
topic: example-topic
partitions: 0
from: 1
VS Code 내에서 바로 생산자와 소비자를 호출할 수 있습니다. 매우 쉽고 멋집니다!
결론
그게 다야! 도커 컨테이너를 세우면 확실히 테스트 목적으로 시간을 절약할 수 있었습니다. 이번 포스팅도 재밌게 봐주시고 다음에 또 만나요👋
참조
Reference
이 문제에 관하여(테스트를 위해 로컬 Apache Kafka 인스턴스 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sahan/setting-up-a-local-apache-kafka-instance-for-testing-ibf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)