使用 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 用戶端 APIibmcloud 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 上,追隨者位於分配管理系統 21 上,且所有三個抄本都同步。 如果您查看第二個主題 testtopic,則它只有一個分割區,在分配管理系統 021 上抄寫,但同步抄本清單只會顯示 02。 這表示分配管理系統 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。