DBZ-6424 Add docs for new JmxSignalChannel and JmxNotificationChannel

This commit is contained in:
mfvitale 2023-06-07 10:18:13 +02:00 committed by Fiore Mario Vitale
parent 17be519d1f
commit c3d79fcdb1
4 changed files with 72 additions and 4 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@ -17,8 +17,9 @@ endif::community[]
{prodname} notifications provide a mechanism to obtain status information about the connector.
Notifications can be sent to the following channels:
SinkNotificationChannel:: Notifications are sent through the Connect API to a configured topic.
LogNotificationChannel:: Notification are appended to the log.
SinkNotificationChannel:: sends notifications through the Connect API to a configured topic.
LogNotificationChannel:: notifications are appended to the log.
JmxNotificationChannel:: notifications are exposes as an attribute in a JMX bean
Custom:: Notifications are sent to a xref:debezium-notification-custom-channel[custom channel] that you implement.
@ -183,9 +184,30 @@ By default, the following notification channels are available:
* `sink`
* `log`
* `jmx`
To use the `sink` notification channel, you must also set the `notification.sink.topic.name` configuration property to the name of the topic where you want {prodname} to send notifications.
// Type: procedure
[id="access-debezium-jmx-notifications"]
=== Access to {prodname} JMX notifications
To access to notification provided through JMX bean you need to:
* xref:operations/monitoring.adoc[enable JMX MBeanServer] to expose the notification bean
* add `jmx` to the `notification.enabled.channels` configuration property.
* connect with your preferred client to MBeanServer
Notifications are exposed in the bean named `debezium.<connector-type>.management.notifications.<server>` through the `Notifications` attribute.
The image below shows the notification about the start of the incremental snapshot
image::jmx-notification-attribute.png[JMX notification attribute]
You can also `reset` the notifications calling the `reset` operation on the bean.
The notifications are also exposed as a JMX notification with type `debezium.notification`. You can link:https://www.ibm.com/docs/en/streams/4.1.1?topic=streams-processing-jmx-api-notifications[subscribe to receive these notifications] in your application.
// Type: concept
[id="debezium-notification-custom-channel"]
== Custom notification channels

View File

@ -17,9 +17,10 @@ endif::community[]
The {prodname} signaling mechanism provides a way to modify the behavior of a connector, or to trigger a one-time action, such as initiating an xref:debezium-signaling-ad-hoc-snapshots[ad hoc snapshot] of a table.
To use signals to trigger a connector to perform a specified action, you can configure the connector to use one or more of the following channels:
SourceSignalChannel:: You can issue a SQL command to add a signal message to a specialized signaling {data-collection}.
The signaling {data-collection}, which you create on the source database, is designated exclusively for communicating with {prodname}.
SourceSignalChannel:: You can issue a SQL command to add a signal message to a specialized signaling data-collection.
The signaling data-collection, which you create on the source database, is designated exclusively for communicating with {prodname}.
KafkaSignalChannel:: You submit signal messages to a configurable Kafka topic.
JmxSignalChannel:: You submit signal through the `signal` JMX operation.
Custom:: You submit signals to a xref:debezium-custom-signaling-channel[custom channel] that you implement.
When {prodname} detects that a new xref:debezium-signaling-example-of-a-logging-record[logging record] or xref:debezium-signaling-example-of-an-ad-hoc-signal-record[ad hoc snapshot record] is added to the channel, it reads the signal, and initiates the requested operation.
@ -193,6 +194,51 @@ Key = `test_connector`
Value = `{"type":"execute-snapshot","data": {"data-collections": ["schema1.table1", "schema1.table2"], "type": "INCREMENTAL"}}`
----
// Type: procedure
// Title: Enabling the {prodname} JMX signaling channel
[id="debezium-signaling-enabling-jmx-signaling-channel"]
== Enabling JMX signaling channel
You can enable the JMX signaling channel by adding `jmx` to the `signal.enabled.channels` configuration property.
Then you need xref:operations/monitoring.adoc[to enable JMX MBeanServer] to expose the signaling bean.
=== Send signal
First of all, you need to connect to the `MBeanServer` through your preferred tool (i.e. jconsole, JDK Mission Control) , then you need to search for a bean named `debezium.<connector-type>.management.signals.<server>`
This bean expose the `signal` operation that take in input three parameters:
p0:: id of the signal
p1:: type of the signal for example `execute-snapshot`
p2:: json data field that contains additional information for the specific signal type.
When the signal type is set to `execute-snapshot`, the `data` field must include the fields that are listed in the following table:
.Execute snapshot data fields
[cols="2,2,6",options="header"]
|===
|Field | Default | Value
|`type`
|`incremental`
| The type of the snapshot to run.
Currently {prodname} supports only the `incremental` type.
|`data-collections`
|_N/A_
| An array of comma-separated regular expressions that match the fully-qualified names of the tables to include in the snapshot. +
Specify the names by using the same format as is required for the xref:{context}-property-signal-data-collection[signal.data.collection] configuration option.
|`additional-condition`
|_N/A_
| An optional string that specifies a condition that the connector evaluates to designate a subset of records to include in a snapshot.
|===
The following image shows how to send signal from `jconsole`
image::jmx-signal-operation.png[]
// Type: concept
[id="debezium-custom-signaling-channel"]
== Custom signaling channel