12.4. コネクターのステータスを報告する通知設定
Debezium の通知は、コネクターに関するステータス情報を取得するメカニズムを提供します。通知は、以下のチャネルに送信できます。
- SinkNotificationChannel
- Connect API を介して、設定されたトピックに通知を送信します。
- LogNotificationChannel
- 通知がログに追加されます。
- JmxNotificationChannel
- 通知は JMX Bean の属性として公開されます。
- Debezium 通知の詳細は、以下を参照してください。
12.4.1. Debezium 通知形式の説明
通知メッセージには、以下の情報が含まれます。
プロパティー | 説明 |
---|---|
id |
通知に割り当てられる一意の識別子。増分スナップショット通知の場合、 |
aggregate_type | 通知が関連する集約ルートのデータ型。ドメイン駆動設計では、エクスポートされたイベントは常に集約を参照する必要があります。 |
type |
|
additional_data | 通知に関する詳細情報を含む Map<String,String>。例については、増分スナップショットの進行状況に関する Debezium の通知 を参照してください。 |
12.4.2. Debezium 通知の種類
Debezium の通知では、初期スナップショット または 増分スナップショット の進行状況に関する情報が提供されます。
初期スナップショットのステータスに関する Debezium 通知
次の例は、初期スナップショットのステータスを提供する一般的な通知を示しています。
{
"id": "5563ae14-49f8-4579-9641-c1bbc2d76f99",
"aggregate_type": "Initial Snapshot",
"type": "COMPLETED" 1
}
- 1
- type フィールドには、以下のいずれかの値を含めることができます。
-
COMPLETED
-
ABORTED
-
SKIPPED
-
12.4.2.1. 例: 増分スナップショットの進行状況をレポートする Debezium 通知
次の表では、増分スナップショットのステータスを報告する通知に含まれる可能性のあるさまざまなペイロードの例を紹介しています。
ステータス | ペイロード |
---|---|
Start |
{ "id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f", "aggregate_type":"Incremental Snapshot", "type":"STARTED", "additional_data":{ "connector_name":"my-connector", "data_collections":"table1, table2" } } |
Paused |
{ "id":"068d07a5-d16b-4c4a-b95f-8ad061a69d51", "aggregate_type":"Incremental Snapshot", "type":"PAUSED", "additional_data":{ "connector_name":"my-connector", "data_collections":"table1, table2" } } |
Resumed |
{ "id":"a9468204-769d-430f-96d2-b0933d4839f3", "aggregate_type":"Incremental Snapshot", "type":"RESUMED", "additional_data":{ "connector_name":"my-connector", "data_collections":"table1, table2" } } |
Stopped |
{ "id":"83fb3d6c-190b-4e40-96eb-f8f427bf482c", "aggregate_type":"Incremental Snapshot", "type":"ABORTED", "additional_data":{ "connector_name":"my-connector" } } |
チャンクの処理 |
{ "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" } } |
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" 1
}
}
|
Completed |
{ "id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d", "aggregate_type":"Incremental Snapshot", "type":"COMPLETED", "additional_data":{ "connector_name":"my-connector" } } |
12.4.3. イベントを通知チャネルに送信できるように Debezium の有効化
Debezium が通知を発行できるようにするには、notification.enabled.channels
設定プロパティーを設定して通知チャネルのリストを指定します。デフォルトでは、以下の通知チャネルを利用できます。
-
sink
-
log
-
jmx
sink
通知チャネルを使用するには、notification.sink.topic.name
設定プロパティーを、Debezium が通知を送信するトピックの名前に設定する必要もあります。
12.4.3.1. JMX Bean を通じて公開されたイベントをレポートするための Debezium 通知の有効化
Debezium が JMX Bean を通じて公開されるイベントをレポートできるようにするには、次の設定手順を実行します。
- JMX MBean サーバーが通知 Bean を有効化して 公開できるようにします。
-
コネクター設定の
notification.enabled.channels
プロパティーにjmx
を追加します。 - 優先する JMX クライアントを MBean サーバーに接続します。
通知は、debezium.<connector-type>.management.notifications.<server>
という名前の Bean の Notifications
属性を通じて公開されます。
次の図は、増分スナップショットの開始を報告する通知を示しています。
通知を破棄するには、Bean で reset
操作を呼び出します。
通知は、debezium.notification
タイプの JMX 通知としても公開されます。アプリケーションが MBean が発行する JMX 通知をリッスンできるようにするには、アプリケーションを通知にサブスクライブ します。