Kafka クライアントからのメッセージの生成と消費

  • リリースバージョン: Zurich
  • 更新日 2025年08月13日
  • 所要時間:5分
  • Kafka クライアントから Hermes するメッセージを生成して消費する方法について説明します。

    Kafka クライアントからのメッセージの交換を開始するには、まず Hermes Kafka クラスターにトピックを作成します。トピックを正常に作成したら、 Hermesと通信するために合計 3 つのプロセスを作成する必要があります。

    • Hermes へのメッセージを生成するのにプロセスが 1 つ必要です。
    • Hermes からのメッセージを消費するのにプロセスが 2 つ必要です。Hermes はフェイルオーバー目的で、Kafka クラスターをペアで使用するため、プロセスが 2 つ必要になります。片方のクラスターがダウンすると、データはもう一方の Hermes Kafka クラスターに生成されます。
      重要:
      コンシューマークライアントごとに 1 つずつ、2 つの異なるコンシューマーブートストラップアドレスを設定する必要があります。

    1 つのコンシューマープロセスは 410x 範囲のポートを使用し、もう 1 つは 420x 範囲のポートを使用します。つまり、ポート範囲ごとに 1 つずつ、2 つの異なるクライアントを定義する必要があります。各クライアント構成内で、コンシューマーグループ ID を定義できます。

    必要なポート範囲

    Hermes を使用してメッセージの交換を開始する前に、ネットワークアドミニストレーターと協力して、次のポート範囲が開いていることを確認してください。
    • プロデューサー: 4000 ~ 4050
    • コンシューマー 1:4100 ~ 4150
    • コンシューマー 2:4200 ~ 4250

    ファイアウォールを介してポートにアクセスできることを確認するには、次のコマンドを実行します。

    openssl s_client -connect <instance_name>.service-now.com:<port> -servername <instance_name>.service-now.com
    • インスタンスで別のドメイン名を使用している場合は、service-now.com ドメインを変更します。
    • 3 つのポート範囲のそれぞれのポートを使用してテストを完了します。例:test 4000-4003、4100-4103、4200-4203。

    コマンドが内部では失敗しても、ネットワーク外のクライアントから成功した場合は、ネットワーク管理者に問い合わせて、ネットワークファイアウォールを介してアクセスしてください。

    ブートストラップアドレス

    次のポートマッピングを使用して、プロデューサーとコンシューマーを Kafka クラスターのブートストラップアドレスにコネクトします。Hermes で使用されるすべてのアプリケーションデリバリコントローラーは、これと同じ規則に従います。

    重要:
    以下の Hermes ブートストラップアドレスの例では、ポート 4000 ~ 4003、4100 ~ 4103、および 4200 ~ 4203 を使用しています。しかし、Hermes メッセージングサービス にクラスターが追加されたときの接続を確保するために、次のポート範囲を開く必要があります。
    • プロデューサー: 4000 ~ 4050
    • コンシューマー 1:4100 ~ 4150
    • コンシューマー 2:4200 ~ 4250

    プロデューサークライアントは、4000 〜 4050 のポートを使用します。例:

    Producers = "<instance_name>.service-now.com:4000,<instance_name>.service-now.com:4001,<instance_name>.service-now.com:4002,<instance_name>.service-now.com:4003"

    Hermes は Kafka クラスターのペアを使用するため、別々のコンシューマーブートストラップアドレスを持つ 2 つのコンシューマークライアントを構成する必要があります。

    重要:
    コンシューマークライアントごとに 1 つずつ、2 つの異なるコンシューマーブートストラップアドレスを設定する必要があります。
    • 1 つ目のコンシューマークライアントは、4100 〜 4150 の範囲のポートを使用します。例:
      Consumer A = "<instance_name>.service-now.com:4100,<instance_name>.service-now.com:4101,<instance_name>.service-now.com:4102,<instance_name>.service-now.com:4103"
    • 2 つ目のコンシューマークライアントは、4200 〜 4250 の範囲のポートを使用します。例:
      Consumer B = "<instance_name>.service-now.com:4200,<instance_name>.service-now.com:4201,<instance_name>.service-now.com:4202,<instance_name>.service-now.com:4203"

    独自の Kafka クライアントのプロデューサープロパティとコンシューマープロパティを設定する場合は、この文字列パターンを使用します。

    コマンドラインインターフェイス(CLI)の使用

    list コマンドを使用してトピックのリストを表示すると、現在のトピックのリストが一方または両方のクラスターから返されます。トピックが 1 つのクラスターからのみ返される可能性があるのは、最後の同期がいつ発生したかによります。フェイルオーバーの目的で作成されたトピックは、3 文字のクラスター識別プリフィックスによって区別されます。

    CLI を使用して Hermes クラスターにアクセスすると、作成したトピックに加えて内部トピックが表示されます。詳細については、次を参照してください。 KB1705399.

    コマンドラインインターフェイス (CLI) で 1 つのコマンドを使用して、両方の Kafka クラスターからトピックを削除することはできません。ただし、インスタンスのトピックレコードを削除すれば、両方のクラスターからトピックを削除できます。「Hermes 内のトピックの削除」を参照してください。