Hermes メッセージングサービス を使用したデータの交換
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 内のトピックの削除」を参照してください。
必要なポート範囲
- プロデューサー: 4000 ~ 4050
- コンシューマー 1:4100 ~ 4150
- コンシューマー 2:4200 ~ 4250
ブートストラップアドレス
次のポートマッピングを使用して、プロデューサーとコンシューマーを Kafka クラスターのブートストラップアドレスにコネクトします。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 つ目のコンシューマークライアントは、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 クライアントのプロデューサープロパティとコンシューマープロパティを設定する場合は、この文字列パターンを使用します。