12.2. Kafka 브리지 빠른 시작
이 빠른 시작을 사용하여 Red Hat Enterprise Linux에서 AMQ Streams Kafka 브리지를 사용해 보십시오. 다음을 수행하는 방법을 배울 수 있습니다.
- Kafka 브리지 설치
- Kafka 클러스터의 주제 및 파티션에 메시지 생성
- Kafka 브리지 소비자 생성
- 소비자가 주제에 가입하고 생성한 메시지 검색과 같은 기본 소비자 작업 수행
이 빠른 시작에서는 HTTP 요청이 터미널에 복사하여 붙여넣을 수 있는 curl 명령으로 포맷됩니다.
사전 요구 사항이 있는지 확인한 다음 이 장에 제공된 순서대로 작업을 수행합니다.
데이터 형식 정보
이 빠른 시작에서는 바이너리가 아닌 JSON 형식으로 메시지를 생성하고 사용합니다. 예제 요청에 사용되는 데이터 형식 및 HTTP 헤더에 대한 자세한 내용은 12.1.1절. “인증 및 암호화” 을 참조하십시오.
빠른 시작을 위한 사전 요구 사항
12.2.1. 로컬로 Kafka 브리지 배포 링크 복사링크가 클립보드에 복사되었습니다!
AMQ Streams Kafka Bridge 인스턴스를 호스트에 배포합니다. 설치 아카이브와 함께 제공된 application.properties 파일을 사용하여 기본 구성 설정을 적용합니다.
프로세스
application.properties파일을 열고 기본HTTP 관련 설정이정의되어 있는지 확인합니다.http.enabled=true http.host=0.0.0.0 http.port=8080
http.enabled=true http.host=0.0.0.0 http.port=8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 포트 8080에서 요청을 수신 대기하도록 Kafka 브리지가 구성됩니다.
구성 속성을 매개변수로 사용하여 Kafka Bridge 스크립트를 실행합니다.
./bin/kafka_bridge_run.sh --config-file=<path>/application.properties
./bin/kafka_bridge_run.sh --config-file=<path>/application.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
다음에 수행할 작업
12.2.2. 주제 및 파티션에 메시지 생성 링크 복사링크가 클립보드에 복사되었습니다!
주제 끝점을 사용하여 JSON 형식의 항목에 메시지를 생성합니다.
다음과 같이 요청 본문에 메시지에 대한 대상 파티션을 지정할 수 있습니다. 파티션 끝점은 모든 메시지의 단일 대상 파티션을 경로 매개 변수로 지정하는 대체 방법을 제공합니다.
프로세스
kafka-topics.sh유틸리티를 사용하여 Kafka 주제를 생성합니다.bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic bridge-quickstart-topic --partitions 3 --replication-factor 1 --config retention.ms=7200000 --config segment.bytes=1073741824
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic bridge-quickstart-topic --partitions 3 --replication-factor 1 --config retention.ms=7200000 --config segment.bytes=1073741824Copy to Clipboard Copied! Toggle word wrap Toggle overflow 파티션을 세 개 지정합니다.
주제가 생성되었는지 확인합니다.
bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic bridge-quickstart-topic
bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic bridge-quickstart-topicCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka 브리지를 사용하여 생성한 항목에 세 개의 메시지를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
sales-lead-0001은 키의 해시를 기반으로 파티션으로 전송됩니다. -
sales-lead-0002는 파티션 2로 직접 전송됩니다. -
sales-lead-0003은 라운드 로빈 방법을 사용하여bridge-quickstart-topic주제의 파티션으로 전송됩니다.
-
요청이 성공하면 Kafka 브리지는
200(OK) 코드 및application/vnd.kafka.v2+json의content-type헤더와 함께오프셋배열을 반환합니다. 각 메시지에 대해오프셋배열은 다음을 설명합니다.- 메시지가 전송된 파티션
파티션의 현재 메시지 오프셋
응답 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음에 수행할 작업
주제 및 파티션에 메시지를 생성한 후 Kafka Bridge 소비자를 생성합니다.
추가 리소스
- API 참조 문서의 POST /topics/{topicname}
- API 참조 문서 의 POST /topicname}/partitions/{partitionid}.
12.2.3. Kafka 브리지 소비자 생성 링크 복사링크가 클립보드에 복사되었습니다!
Kafka 클러스터에서 소비자 작업을 수행하려면 먼저 소비자 끝점을 사용하여 소비자를 생성해야 합니다. 소비자를 Kafka 브리지 소비자 라고 합니다.
프로세스
bridge-quickstart-consumer-group이라는 새 소비자 그룹에 Kafka 브리지 소비자를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
소비자의 이름은
bridge-quickstart-consumer로 지정되며 포함된 데이터 형식은json으로 설정됩니다. enable.auto.commit설정은false이므로 소비자는 로그에 오프셋을 자동으로 커밋하지 않습니다. 이 빠른 시작의 뒷부분에서 오프셋을 수동으로 커밋합니다.참고요청 본문에 소비자 이름을 지정하지 않으면 Kafka Bridge에서 임의의 소비자 이름을 생성합니다.
요청이 성공하면 Kafka 브리지는
200(OK) 코드와 함께 응답 본문의 소비자 ID(instance_id) 및 기본 URL(base_uri)을 반환합니다.응답 예
#... { "instance_id": "bridge-quickstart-consumer", "base_uri":"http://<bridge-name>-bridge-service:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumer" }#... { "instance_id": "bridge-quickstart-consumer", "base_uri":"http://<bridge-name>-bridge-service:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumer" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
소비자의 이름은
-
이 빠른 시작의 다른 소비자 작업에 사용할 기본 URL(
base_uri)을 복사합니다.
다음에 수행할 작업
이제 Kafka 브리지 소비자를 생성했으므로 주제를 구독할 수 있습니다.
추가 리소스
- API 참조 문서의 POST /consumers/{groupid}
12.2.4. Kafka 브리지 소비자 등록 링크 복사링크가 클립보드에 복사되었습니다!
서브스크립션 엔드포인트를 사용하여 Kafka 브리지 소비자를 하나 이상의 항목에 등록합니다. 가입되면 소비자가 주제로 생성된 모든 메시지를 수신하기 시작합니다.
프로세스
이전에 생성한
bridge-quickstart-topic항목에 소비자를 구독하면 메시지를 주제 및 파티션에 유도합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 주제배열에는 위에 표시된 대로 단일 주제 또는 여러 주제가 포함될 수 있습니다. 일반 표현식과 일치하는 여러 항목에 소비자를 서브스크립션하려면주제배열 대신topic_pattern문자열을 사용할 수 있습니다.요청이 성공하면 Kafka 브리지는
204 No Content코드만 반환합니다.
다음에 수행할 작업
Kafka Bridge 소비자를 항목에 등록한 후 소비자 에서 메시지를 검색할 수 있습니다.
추가 리소스
12.2.5. Kafka 브리지 소비자에서 최신 메시지 검색 링크 복사링크가 클립보드에 복사되었습니다!
레코드 끝점에서 데이터를 요청하여 Kafka Bridge 소비자에서 최신 메시지를 검색합니다. 프로덕션에서 HTTP 클라이언트는 이 끝점을 루프에서 반복적으로 호출할 수 있습니다.
프로세스
- 주제 및 파티션에 대한 메시지 전달에 설명된 대로 Kafka Bridge 소비자에 추가 메시지를 생성합니다.
GET요청을레코드끝점에 제출합니다.curl -X GET http://localhost:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumer/records \ -H 'accept: application/vnd.kafka.json.v2+json'
curl -X GET http://localhost:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumer/records \ -H 'accept: application/vnd.kafka.json.v2+json'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka Bridge 소비자를 생성하고 구독하면 첫 번째 GET 요청이 빈 응답을 반환하므로 폴링 작업에서 파티션을 재조정 프로세스를 트리거합니다.
두 단계를 반복하여 Kafka 브리지 소비자에서 메시지를 검색합니다.
Kafka Bridge는
200(OK) 코드와 함께 응답 본문에 있는 주제 이름, 키, 값, 파티션 및 오프셋 function을 설명하는 messages의 배열을 반환합니다. 메시지는 기본적으로 최신 오프셋에서 검색됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고빈 응답이 반환되면 주제 및 파티션에 대한 메시지 전달에 설명된 대로 소비자에 더 많은 레코드를 생성한 다음 메시지를 다시 검색해 보십시오.
다음에 수행할 작업
Kafka 브리지 소비자에서 메시지를 검색한 후 로그에 오프셋을 커밋합니다.
추가 리소스
12.2.6. 로그에 오프셋 커밋 링크 복사링크가 클립보드에 복사되었습니다!
오프셋 끝점을 사용하여 Kafka Bridge 소비자가 수신한 모든 메시지의 로그에 오프셋을 수동으로 커밋합니다. 이전에 생성한 Kafka 브리지 소비자 생성 에서 enable.auto.commit 설정을 false 로 사용하여 구성되었기 때문에 이 작업이 필요합니다.
프로세스
bridge-quickstart-consumer:의 로그에 대한 커밋 오프셋curl -X POST http://localhost:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumer/offsets
curl -X POST http://localhost:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumer/offsetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 요청 본문이 제출되지 않으므로 소비자가 수신한 모든 레코드에 대해 오프셋이 커밋됩니다. 또는 요청 본문에 오프셋을 커밋할 주제와 파티션을 지정하는 배열(OffsetCommitSeekList)이 포함될 수 있습니다.
요청이 성공하면 Kafka 브리지는
204 No Content코드만 반환합니다.
다음에 수행할 작업
로그에 오프셋을 커밋한 후 오프셋을 찾기 위해 끝점을 시도합니다.
추가 리소스
12.2.7. 파티션 오프셋 검색 링크 복사링크가 클립보드에 복사되었습니다!
위치 끝점을 사용하여 특정 오프셋에서 파티션에 대한 메시지를 검색한 다음 최신 오프셋에서 메시지를 검색하도록 Kafka 브리지 소비자를 구성합니다. 이를 Apache Kafka에서 검색 작업이라고 합니다.
프로세스
quickstart-bridge-topic주제의 파티션 0에 대한 특정 오프셋을 찾습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 요청이 성공하면 Kafka 브리지는
204 No Content코드만 반환합니다.GET요청을레코드끝점에 제출합니다.curl -X GET http://localhost:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumer/records \ -H 'accept: application/vnd.kafka.json.v2+json'
curl -X GET http://localhost:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumer/records \ -H 'accept: application/vnd.kafka.json.v2+json'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka 브리지는 원하는 오프셋에서 메시지를 반환합니다.
동일한 파티션의 마지막 오프셋을 찾아 기본 메시지 검색 동작을 복원합니다. 이번에는 위치/엔드 엔드포인트를 사용합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 요청이 성공하면 Kafka 브리지는 또 다른
204 No Content코드를 반환합니다.
position/beginning 끝점을 사용하여 하나 이상의 파티션에 대한 첫 번째 오프셋을 검색할 수도 있습니다.
다음에 수행할 작업
이 빠른 시작에서는 AMQ Streams Kafka 브리지를 사용하여 Kafka 클러스터에서 몇 가지 일반적인 작업을 수행했습니다. 이제 이전에 생성한 Kafka 브리지 소비자를 삭제할 수 있습니다.
추가 리소스
12.2.8. Kafka 브리지 소비자 삭제 링크 복사링크가 클립보드에 복사되었습니다!
마지막으로 이 빠른 시작 전체에서 사용한 Kafa Bridge 소비자를 삭제합니다.
프로세스
인스턴스 엔드포인트에
DELETE요청을 전송하여 Kafka 브리지 소비자를 삭제합니다.curl -X DELETE http://localhost:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumer
curl -X DELETE http://localhost:8080/consumers/bridge-quickstart-consumer-group/instances/bridge-quickstart-consumerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 요청이 성공하면 Kafka 브리지는
204 No Content코드만 반환합니다.
추가 리소스
- API 참조 문서의 /consumers/{groupid}/instances/{name} 삭제