Apache Kafkaストリームコネクトの使用

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:10分
  • ストリームコネクト for Apache Kafka を使用して、Apache Kafka 環境を ServiceNow インスタンスに接続します。

    Apache Kafka は、複数のシステム間でデータを交換するための統一された方法を提供する分散イベントストリーミングプラットフォームです。 ストリームコネクト for Apache Kafka は Kafka 環境を ServiceNow インスタンスにリンクし、インスタンスと外部システム間でデータをストリーミングできるようにします。

    注:
    ストリームコネクトにはWorkflow Data Fabricストリームコネクトのサブスクリプション登録が必要です。詳細については、「https://www.servicenow.com/now-platform/workflow-data-fabric.html」を参照してください。

    メリット

    • Kafka イベントを大規模に公開して処理します。ServiceNow インスタンスから Kafka 環境にイベントを公開し、外部システムからの Kafka イベントを低レイテンシで大量に使用します。

    • Kafka イベントを生成および消費するフローをビルドします。 ストリームコネクトワークフロースタジオ と統合されているため、ローコードで Kafka メッセージを公開および処理できます。
    • Kafka 環境からデータをインポートし、既存の強力な変換エンジン (RTE) または変換マップ構成を使用してそのデータを処理します。
    • 独自のスクリプトを使用して Kafka トピックからのデータを処理するコンシューマーを構成します。
    • 統計情報とパフォーマンスメトリクスの詳細なレポートを使用して、コンシューマーのパフォーマンスを監視します。

    コンポーネント

    ストリームコネクト には次のコンポーネントがあります。

    プロデューサー

    プロデューサーが Kafka 環境にイベントを公開します。 ストリームコネクト には 2 人のプロデューサーがいます。

    • ワークフロースタジオ の Kafka プロデューサーステップ
    • ProducerV2 API
    コンシューマー

    コンシューマーは、Kafka 環境からイベントを読み取って処理します。 ストリームコネクト には複数のコンシューマーがいます。

    • ワークフロースタジオ での Kafka メッセージトリガー
    • 抽出変換ロード (ETL) コンシューマー
    • 変換マップコンシューマー
    • スクリプトコンシューマー
    トピックとトピックの名前空間

    イベントはトピックに編成されて保存されます。1 つのトピックには同じタイプのイベントが格納されます。トピックはパーティションに分割されます。イベントにはキーがあります。同じキーを持つイベントは同じパーティションに格納されます。

    トピックはトピックの名前空間にリンクされます。名前空間を使用して、論理的な方法でトピックを整理できます。たとえば、取得元の Kafka クラスターに基づいてトピックをグループ化できます。名前空間を使用して、どのドメインがドメインセパレーションされたインスタンスのどのトピックにアクセスできるかを設定することもできます。詳細については、「Managing namespaces and topics in Hermes」を参照してください。

    サブスクリプション

    サブスクリプションは、コンシューマーに関連付けられたレコードです。メッセージを消費する Kafka トピックの名前やトピックが持つパーティションの数など、コンシューマーに関する構成情報が格納されます。サブスクリプションレコードは、Kafka ストリームがアクティブ化されると作成されます。

    各サブスクリプションレコードにあるいくつかのメトリクスを使用すると、トピックからコンシューマー読み取りを行うパフォーマンスを表示できます。詳細については、「Kafka サブスクリプションと統計情報の表示」を参照してください。

    パーティショングループ

    パーティショングループは、一連のトピックパーティションです。たとえば、トピックに 6 つのパーティションがある場合、各グループに 2 つのパーティションがある 3 つのパーティショングループに分割できます。

    Kafka コンシューマージョブ

    トピック内に新しいイベントがないか Hermes を定期的にチェックするジョブ。ジョブは空きパーティショングループを選択し、そのサブスクリプションを取得します。サブスクリプションでトピック名が得られ、ジョブはそのトピックのメッセージのパーティションをチェックします。

    Kafka ストリーム (次の画像には表示されていません)

    Kafka ストリームは、コンシューマーのデータストリームを定義するレコードです。ワークフロースタジオ で Kafka メッセージトリガーを使用している場合、Kafka ストリームが自動的に作成されます。別のコンシューマーを使用している場合は、手動で作成する必要があります。

    Kafka 環境を ServiceNow インスタンスにリンクするために、ストリームコネクトは Hermes メッセージングサービス を使用します。Hermes メッセージングサービス を使用すると、インスタンスで大量の Kafka イベントを生成して消費できます。Kafka 環境とインスタンス間のデータフローを管理します。詳細については、「Hermes メッセージングサービス」を参照してください

    次の図は、 ストリームコネクト の主要コンポーネント、 ServiceNow アプリケーションやサードパーティアプリケーションとの関連性、Hermes を介して Kafka 環境に接続する方法を示しています。

    図 : 1. ストリームコネクトコンポーネントの概要
    Stream Connect コンポーネントと、Kafka、ServiceNow、および Hermes メッセージングサービス との関連性を示す図。

    ストリームコネクト および ワークフロースタジオ

    ストリームコネクトワークフロースタジオ を使用して Kafka イベントを生成および消費するフローをビルドします。ストリームコネクト には、Kafka イベントを消費するためのフロートリガーと、Kafka イベントを生成するためのアクションステップがあります。

    Kafka メッセージトリガーを使用して、Kafka イベントを処理するフローを作成します。Kafka からデータを消費してテーブルに挿入するフローをビルドするか、スポークを使用してサードパーティ環境にデータを伝達することができます。

    フローがアクティブ化されると、トリガーが有効になります。アクティブ化されると、指定された Kafka トピックにメッセージがあるときはいつでもトリガーがフローを開始します。Kafka メッセージトリガーを使用する場合は、Kafka ストリームまたはサブスクリプションレコードを作成する必要はありません。フローがアクティブ化されると、どちらも自動的に作成されます。フローがアクティブである限り、トピックからメッセージが読み取られます。

    Kafka プロデューサーステップを使用して、Kafka 環境のトピックにイベントを公開するアクションを作成します。たとえば、このステップを使用して ServiceNow 内のインシデントの更新に関するメッセージを作成し、そのメッセージを Kafka 環境のトピックにプッシュすることができます。

    ストリームコネクト 警告

    ストリームコネクト統合のアラートとアラート通知を受信します。ストリームコネクト は、アクティブなモニタリングとスケジュールされたモニタリングの両方を使用して、複数のコンポーネントにわたるイベントを検出します。問題が検出されると、アラートが作成され、 ストリームコネクト ログにメッセージが記録され、アラート通知が送信されます。詳細については、「ストリームコネクト 警告」を参照してください。

    Avro 形式のメッセージのサポート

    スキーマをインポートして作成し、Apache Avro 形式でメッセージを送受信します。Avro 形式を使用することで、ペイロードのサイズを減らし、ローカルの Kafka インスタンスへの統合を簡素化できます。

    Avro スキーマを Confluent レジストリから直接インポートすることも、JSON ファイルまたは JSON 形式の文字列を使用して独自のスキーマを作成することもできます。スキーマは ServiceNow に保存され、プロデューサーとコンシューマーがプレーンテキストメッセージを Avro 形式に変換したり、その逆を行ったりすることができます。詳細については、「でのスキーマ管理 ストリームコネクト」を参照してください。

    ETL、変換マップ、およびスクリプトコンシューマー

    既存の RTE または変換マップ構成を使用して、Kafka 環境からデータをインポートします。抽出変換ロード (ETL) コンシューマーおよび変換マップコンシューマーは、Kafka メッセージからのペイロードの取得、データの変換、テーブルのレコードの挿入または更新を効率的に行えるようにして、データのインポートを簡素化します。予定されているデータインポートからストリームコネクトを使用する方法に切り替え、同じ構成でデータを処理できます。

    スクリプトコンシューマーを使用して、Kafka 環境からデータを処理することもできます。スクリプトコンシューマーは、メッセージ内のデータが構造化されていない場合、またはコードを使用したデータルックアップが必要な場合など、より高度なユースケース用です。

    抽出変換ロード (ETL) コンシューマーの構成変換マップコンシューマーの構成、または スクリプトコンシューマーの構成 を行う場合は、Kafka ストリームの作成 も行う必要があります。

    ProducerV2 API

    ProducerV2 API を使用して Kafka トピックにイベントを公開します。

    ストリームコネクト メッセージレプリケーション

    ストリームコネクトメッセージレプリケーションを使用して、Kafka 環境と ServiceNow の間でデータをレプリケートできます。

    ストリームコネクト メッセージレプリケーションを使用すると、 ServiceNow インスタンスから直接メッセージレプリケーションを構成および管理できます。MID サーバーまたはMID サーバークラスターを使用してデータレプリケーションを実行するため、追加のレプリケーションサービスを構成またはホストする必要はありません。また、必要な証明書が自動的に生成されるため、メッセージレプリケーションのセットアップが簡略化されます。

    詳細については、「ストリームコネクト メッセージレプリケーション」を参照してください。

    未処理および未配信のメッセージ

    メッセージを配信できない場合、メッセージは Kafka 未配信メッセージ [sys_kafka_delivered_messages] テーブルに格納されます。スケジュール済みジョブである Kafka プロデューサー再試行は、定期的にこのテーブルを読み取り、メッセージを再配信しようとします。

    タイムアウトによりメッセージのバッチを処理できない場合、メッセージは Kafka 未処理メッセージ [sys_kafka_unprocessed_messages] テーブルに格納されます。メッセージバッチのタイムアウトは、com.glide.kafka_consumer.timeout プロパティで設定できます。デフォルト値は 60 秒です。このテーブルはローテーションされているため、レコードは自動的に消去されます。

    プロデューサー圧縮形式

    com.glide.kafka_producer.compression_type システムプロパティを使用して、ストリームコネクトプロデューサーの圧縮形式を指定します。次の値がサポートされています。
    • なし
    • GZIP
    • LZ4

    このプロパティは、デフォルトではシステムプロパティ [sys_properties] テーブルに含まれていないため、 手動で追加する必要があります。このプロパティは、すべての ストリームコネクト プロデューサーの圧縮形式を設定します。

    ドメインセパレーション

    ストリームコネクトトピック名前空間を使用して、どのドメインがドメインセパレーションされたインスタンス上の Kafka トピックにアクセスできるかを構成します。トピックを ServiceNow の名前空間にグループ化してから、名前空間を特定のドメインにリンクします。詳細については、「ドメインセパレーションと ストリームコネクト」を参照してください。

    プラグイン

    ストリームコネクト には ServiceNow ストリームコネクト インストーラー [com.glide.hub.stream_connect.installer] プラグインが必要です。このプラグインは、 ストリームコネクト でメッセージベースのストリーミングデータを操作するためのライセンスコンポーネントを有効にします。