Hermes メッセージングサービス を使用したデータの交換

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:5分
  • Hermes メッセージングサービスを使用して、ServiceNow インスタンスで Kafka メッセージを生成および消費できます。

    Hermes メッセージングサービス を使用して ServiceNow インスタンスと Kafka 環境の間でデータを交換するには、いくつかの方法があります。いずれの場合も、データはあるエンティティから生成され、別のエンティティによって消費されます。

    • ストリームコネクト を使用すると、フローアクションまたは Producer API のプロデューサーステップを使用して ServiceNow インスタンスからメッセージを生成し、外部アプリケーションでそのメッセージを消費できます。
      外部アプリケーションからメッセージを生成し、次のいずれかの方法を使用して ServiceNow インスタンス内でメッセージを消費することもできます。
      • Kafka フロートリガー
      • RTE コンシューマー
      • 変換マップコンシューマー
      • スクリプトコンシューマー

      詳細については、「Apache Kafka 向けストリームコネクト」を参照してください。

    • ログエクスポートサービス を使用すると、ServiceNow インスタンスからログを生成し、外部アプリケーションでそのログを使用できます。ログエクスポートサービスのログの生成と消費の詳細については、「Exploring Log Export Service (LES)」を参照してください。
    • Kafka 標準プロトコルを使用してメッセージを生成するアプリケーションとメッセージを交換することもできます。たとえば、標準の Kafka プロトコルを使用して Java アプリケーションからメッセージを生成し、それを ServiceNow インスタンスで消費することができます。またその逆も同様です。

    メッセージの作成と使用

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

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

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

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

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

    必要なポート範囲

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

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

    次のポートマッピングを使用して、プロデューサーとコンシューマーを 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 クライアントのプロデューサープロパティとコンシューマープロパティを設定する場合は、この文字列パターンを使用します。