11.4. コネクターのステータスを報告する通知設定


Debezium の通知は、コネクターに関するステータス情報を取得するメカニズムを提供します。通知は、以下のチャネルに送信できます。

SinkNotificationChannel
Connect API を介して、設定されたトピックに通知を送信します。
LogNotificationChannel
通知がログに追加されます。
JmxNotificationChannel
通知は JMX Bean の属性として公開されます。
Debezium 通知の詳細は、以下を参照してください。

11.4.1. Debezium 通知形式の説明

通知メッセージには、以下の情報が含まれます。

プロパティー説明

id

通知に割り当てられる一意の識別子。増分スナップショット通知の場合、IDexecute-snapshot シグナルで送信されるものと同じです。

aggregate_type

通知が関連する集約ルートのデータ型。ドメイン駆動設計では、エクスポートされたイベントは常に集約を参照する必要があります。

type

aggregate_type フィールドで指定されたイベントに関するステータス情報を提供します。

additional_data

通知に関する詳細情報を含む Map<String,String>。例については、増分スナップショットの進行状況に関する Debezium の通知 を参照してください。

timestamp

通知が作成された時刻。この値は、UNIX エポックからの経過時間をミリ秒数で表します。

11.4.2. Debezium 通知の種類

Debezium の通知では、初期スナップショット または 増分スナップショット の進行状況に関する情報が提供されます。

初期スナップショットのステータスに関する Debezium 通知

次の例は、初期スナップショットのステータスを提供する一般的な通知を示しています。

{
    "id": "5563ae14-49f8-4579-9641-c1bbc2d76f99",
    "aggregate_type": "Initial Snapshot",
    "type": "COMPLETED", 1
    "additional_data" : {
        "connector_name": "myConnector"
    },
    "timestamp": "1695817046353"
}
項目説明

1

type フィールドには、以下のいずれかの値を含めることができます。

  • COMPLETED
  • ABORTED
  • SKIPPED

次の表では、初期スナップショットのステータスを報告する通知に含まれる可能性のあるさまざまなペイロードの例を紹介しています。

Statusペイロード

開始

  {
      "id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f",
      "aggregate_type":"Initial Snapshot",
      "type":"STARTED",
      "additional_data":{
         "connector_name":"my-connector"
      },
      "timestamp": "1695817046353"
}

IN_PROGRESS

{
   "id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d",
   "aggregate_type":"Initial Snapshot",
   "type":"IN_PROGRESS",
   "additional_data":{
      "connector_name":"my-connector",
      "data_collections":"table1, table2",
      "current_collection_in_progress":"table1"
   },
   "timestamp": "1695817046353"
}

フィールド data_collection は、現在 MongoDB コネクターではサポートされていません。

TABLE_SCAN_COMPLETED

{
   "id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d",
   "aggregate_type":"Initial Snapshot",
   "type":"TABLE_SCAN_COMPLETED",
   "additional_data":{
      "connector_name":"my-connector",
      "data_collection":"table1, table2",
      "scanned_collection":"table1",
      "total_rows_scanned":"100",
      "status":"SUCCEEDED"
   },
   "timestamp": "1695817046353"
}

上記の例では、additional_data.status フィールドには以下のいずれかの値を含めることができます。

SQL_EXCEPTION
スナップショットの実行中に SQL 例外が発生しました。
SUCCEEDED
スナップショットが正常に完了しました。

フィールド total_rows_scanned および data_collection は、現在 MongoDB コネクターではサポートされていません。

COMPLETED

  {
      "id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f",
      "aggregate_type":"Initial Snapshot",
      "type":"COMPLETED",
      "additional_data":{
         "connector_name":"my-connector"
      },
      "timestamp": "1695817046353"
}

ABORTED

  {
      "id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f",
      "aggregate_type":"Initial Snapshot",
      "type":"ABORTED",
      "additional_data":{
         "connector_name":"my-connector"
      },
      "timestamp": "1695817046353"
}

SKIPPED

  {
      "id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f",
      "aggregate_type":"Initial Snapshot",
      "type":"SKIPPED",
      "additional_data":{
         "connector_name":"my-connector"
      },
      "timestamp": "1695817046353"
}

11.4.2.1. 例: 増分スナップショットの進行状況をレポートする Debezium 通知

次の表では、増分スナップショットのステータスを報告する通知に含まれる可能性のあるさまざまなペイロードの例を紹介しています。

Statusペイロード

Start

  {
      "id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f",
      "aggregate_type":"Incremental Snapshot",
      "type":"STARTED",
      "additional_data":{
         "connector_name":"my-connector",
         "data_collections":"table1, table2"
      },
      "timestamp": "1695817046353"
}

Paused

{
      "id":"068d07a5-d16b-4c4a-b95f-8ad061a69d51",
      "aggregate_type":"Incremental Snapshot",
      "type":"PAUSED",
      "additional_data":{
         "connector_name":"my-connector",
         "data_collections":"table1, table2"
      },
      "timestamp": "1695817046353"
}

Resumed

 {
   "id":"a9468204-769d-430f-96d2-b0933d4839f3",
   "aggregate_type":"Incremental Snapshot",
   "type":"RESUMED",
   "additional_data":{
      "connector_name":"my-connector",
      "data_collections":"table1, table2"
   },
   "timestamp": "1695817046353"
}

Stopped

{
   "id":"83fb3d6c-190b-4e40-96eb-f8f427bf482c",
   "aggregate_type":"Incremental Snapshot",
   "type":"ABORTED",
   "additional_data":{
      "connector_name":"my-connector"
   },
   "timestamp": "1695817046353"
}

チャンクの処理

{
   "id":"d02047d6-377f-4a21-a4e9-cb6e817cf744",
   "aggregate_type":"Incremental Snapshot",
   "type":"IN_PROGRESS",
   "additional_data":{
      "connector_name":"my-connector",
      "data_collections":"table1, table2",
      "current_collection_in_progress":"table1",
      "maximum_key":"100",
      "last_processed_key":"50"
   },
   "timestamp": "1695817046353"
}

Snapshot completed for a table

{
   "id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d",
   "aggregate_type":"Incremental Snapshot",
   "type":"TABLE_SCAN_COMPLETED",
   "additional_data":{
      "connector_name":"my-connector",
      "data_collection":"table1, table2",
      "scanned_collection":"table1",
      "total_rows_scanned":"100",
      "status":"SUCCEEDED"
   },
   "timestamp": "1695817046353"
}

上記の例では、additional_data.status フィールドには以下のいずれかの値を含めることができます。

テーブルには値が含まれていません。
NO_PRIMARY_KEY
完了スナップショットがありません。テーブルにプライマリーキーがありません。
SKIPPED
このタイプのテーブルのスナップショットを完了できません。詳細は、ログを参照してください。
SQL_EXCEPTION
スナップショットの実行中に SQL 例外が発生しました。
SUCCEEDED
スナップショットが正常に完了しました。
UNKNOWN_SCHEMA
テーブルのスキーマが見つかりませんでした。ログで既知のテーブルのリストを確認してください。

Completed

{
   "id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d",
   "aggregate_type":"Incremental Snapshot",
   "type":"COMPLETED",
   "additional_data":{
      "connector_name":"my-connector"
   },
   "timestamp": "1695817046353"
}

11.4.3. イベントを通知チャネルに送信できるように Debezium の有効化

Debezium が通知を発行できるようにするには、notification.enabled.channels 設定プロパティーを設定して通知チャネルのリストを指定します。デフォルトでは、以下の通知チャネルを利用できます。

  • sink
  • log
  • jmx
重要

sink 通知チャネルを使用するには、notification.sink.topic.name 設定プロパティーを、Debezium が通知を送信するトピックの名前に設定する必要もあります。

11.4.3.1. JMX Bean を通じて公開されたイベントをレポートするための Debezium 通知の有効化

Debezium が JMX Bean を通じて公開されるイベントをレポートできるようにするには、次の設定手順を実行します。

  1. JMX MBean サーバーを有効にして、通知 Bean を公開します。
  2. コネクター設定の notification.enabled.channels プロパティーに jmx を追加します。
  3. 優先する JMX クライアントを MBean サーバーに接続します。

通知は、debezium.<connector-type>.management.notifications.<server> という名前の Bean の Notifications 属性を通じて公開されます。

次の図は、増分スナップショットの開始を報告する通知を示しています。

JMX の通知属性のフィールド

通知を破棄するには、Bean で reset 操作を呼び出します。

通知は、debezium.notification タイプの JMX 通知としても公開されます。アプリケーションが MBean が発行する JMX 通知をリッスンできるようにするには、アプリケーションを通知にサブスクライブ します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.