使用 Kafka 主控台工具搭配 Event Streams
Apache Kafka 隨附各種主控台工具,可進行簡單的管理及傳訊作業。 您可以使用當中的許多種來搭配 Event Streams,不過 Event Streams 並不允許對其 ZooKeeper 叢集的連線。 在 Kafka 開發時,先前需要連線至 ZooKeeper 的許多工具不再具有該需求。
這些主控台工具位於 Kafka 下載的 bin 目錄中。 您可以從 Apache Kafka 下載下載用戶端。
若要提供 SASL 認證給這些工具,請根據下列範例建立內容檔:
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="USER" password="PASSWORD";
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.endpoint.identification.algorithm=HTTPS
請將 USER 及 PASSWORD 取代為來自 Event Streams 主控台中 IBM Cloud 服務認證標籤的值。
主控台生產者
您可以使用 Kafka 主控台生產者工具搭配 Event Streams。 您必須提供分配管理系統及 SASL 認證的清單。
建立內容檔之後,您可以在終端機中執行主控台生產者,如下所示:
kafka-console-producer.sh --broker-list BOOTSTRAP_ENDPOINTS --producer.config CONFIG_FILE --topic TOPIC_NAME
將範例中的下列變數取代為您自己的值:
- 使用來自 IBM Cloud 主控台中 Event Streams 服務認證 標籤的值的 BOOTSTRAP_ENDPOINTS。
- CONFIG_FILE 取代為配置檔的路徑。
您可以使用此工具的許多其他選項,但需要存取 ZooKeeper的選項除外。
主控台消費者
您可以使用 Kafka 主控台消費者工具搭配 Event Streams。 您必須提供引導伺服器及 SASL 認證。
如先前所述建立內容檔之後,請在終端機中執行主控台消費者,如下所示:
kafka-console-consumer.sh --bootstrap-server BOOTSTRAP_ENDPOINTS --consumer.config CONFIG_FILE --topic TOPIC_NAME
將範例中的下列變數取代為您自己的值:
- 使用來自 IBM Cloud 主控台中 Event Streams 服務認證 標籤的值的 BOOTSTRAP_ENDPOINTS。
- CONFIG_FILE 取代為配置檔的路徑。
您可以使用此工具的許多其他選項,但需要存取 ZooKeeper的選項除外。
消耗者群組
您可以使用 Kafka 消費者群組工具搭配 Event Streams。 因為 Event Streams 不允許對其 ZooKeeper 叢集的連線,所以無法使用部分選項。
如先前所述建立內容檔之後,請在終端機中執行消費者群組工具。 例如,您可以列出消費者群組,如下所示:
kafka-consumer-groups.sh --bootstrap-server BOOTSTRAP_ENDPOINTS --command-config CONFIG_FILE --list --timeout 60000
將範例中的下列變數取代為您自己的值:
- 使用來自 IBM Cloud 主控台中 Event Streams 服務認證 標籤的值的 BOOTSTRAP_ENDPOINTS。
- CONFIG_FILE 取代為配置檔的路徑。
使用此工具,您也可以顯示詳細資料,例如消費者的現行位置、他們的落後程度,以及群組的每個分割區的 client-id。 例如:
kafka-consumer-groups.sh --bootstrap-server BOOTSTRAP_ENDPOINTS --command-config CONFIG_FILE --describe --group GROUP --timeout 60000
請將範例中的 GROUP 取代為您要擷取其詳細資料的群組名稱。
請參閱執行 kafka-consumer-groups 工具的下列範例輸出:
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
consumer-group-1 foo 0 264 267 3 client-1-abc example.com client-1
consumer-group-1 foo 1 124 124 0 client-1-abc example.com client-1
consumer-group-1 foo 2 212 212 0 client-2-def example.com client-2
在此範例中,您可以看到消費者群組 consumer-group-1 有兩個消費者成員使用來自具有三個分割區的主題 foo 的訊息。 它也會顯示從分割區 0 耗用的消費者 client-1-abc 落後三則訊息,因為消費者的現行偏移是 264,但分割區 0 上最後一則訊息的偏移是 267。
主題
您可以搭配使用 kafka-topics 工具與 Event Streams。 請確定您使用工具 V2.8,因為它不需要 Zookeeper 存取權。
您可能想要使用 kafka-topics 的實務範例是瞭解現有叢集中主題及其配置的相關資訊,以便您可以在新叢集中建立它們。 您可以使用從 kafka-topics 輸出的資訊,在新叢集中建立名稱相同的主題。 如需如何建立主題的相關資訊,請參閱使用管理 Kafka Java 用戶端 API 或 ibmcloud es topic-create 指令。 或者,您也可以使用 IBM Event Streams 主控台。
請參閱執行 kafka-topics 工具的下列範例輸出:
bin/kafka-topics.sh --bootstrap-server kafka03-prod01.messagehub.services.us-south.bluemix.net:9093 --command-config vcurr_dal06.properties --describe
Topic:sample-topic PartitionCount:3 ReplicationFactor:3 Configs:min.insync.replicas=2,unclean.leader.election.enable=true,retention.bytes=1073741824,segment.bytes=536870912,retention.ms=86400000
Topic: sample-topic Partition: 0 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1
Topic: sample-topic Partition: 1 Leader: 1 Replicas: 1,2,0 Isr: 0,2,1
Topic: sample-topic Partition: 2 Leader: 2 Replicas: 2,1,0 Isr: 0,2,1
Topic:testtopic PartitionCount:1 ReplicationFactor:3 Configs:min.insync.replicas=2,unclean.leader.election.enable=true,retention.bytes=1073741824,segment.bytes=536870912,retention.ms=86400000
Topic: testtopic Partition: 0 Leader: 0 Replicas: 0,2,1 Isr: 0,2
從範例中,您可以看到主題 sample-topic 具有三個分割區,且抄寫因數為三個。 此範例也會顯示每一個分割區的主導者所在的分配管理系統,以及同步的抄本 (Isr)。例如,分割區 0 的主導者位於分配管理系統 0 上,追隨者位於分配管理系統 2 及 1 上,且所有三個抄本都同步。 如果您查看第二個主題 testtopic,則它只有一個分割區,在分配管理系統
0、2 及 1 上抄寫,但同步抄本清單只會顯示 0 及 2。 這表示分配管理系統 1 上的追隨者落後,因此不在 Isr 清單中。
Kafka Streams 重設
您可以使用此工具搭配 Event Streams 以重設 Kafka Streams 應用程式的處理狀態,以便可以從頭重新處理它的輸入。 執行此工具之前,請確定您的 Streams 應用程式已完全停止。
例如:
kafka-streams-application-reset.sh --bootstrap-servers BOOTSTRAP_ENDPOINTS --config-file CONFIG_FILE --application-id APP_ID
將範例中的下列變數取代為您自己的值:
- 使用來自 IBM Cloud 主控台中 Event Streams 服務認證 標籤的值的 BOOTSTRAP_ENDPOINTS。
- CONFIG_FILE 取代為配置檔的路徑。
- APP_ID 取代為您的 Streams 應用程式 ID。