@NotThreadSafe public class TransactionMonitor extends Object
TransactionContext context class so it can be stored in and recovered from offsets.
The class receives all processed events and keeps the transaction tracking depending on transaction id.
Upon transaction change the metadata events are delivered to a dedicated topic informing about START/END of the transaction,
including transaction id and in case of END event the amount of events generated by the transaction.
Every event seen has its source block enriched to contain
| Constructor and Description |
|---|
TransactionMonitor(CommonConnectorConfig connectorConfig,
EventMetadataProvider eventMetadataProvider,
BlockingConsumer<org.apache.kafka.connect.source.SourceRecord> sender) |
| Modifier and Type | Method and Description |
|---|---|
private void |
beginTransaction(OffsetContext offsetContext) |
void |
dataEvent(DataCollectionId source,
OffsetContext offset,
Object key,
org.apache.kafka.connect.data.Struct value) |
private void |
endTransaction(OffsetContext offsetContext) |
void |
transactionComittedEvent(OffsetContext offset) |
private void |
transactionEvent(OffsetContext offsetContext,
DataCollectionId source,
org.apache.kafka.connect.data.Struct value) |
void |
transactionStartedEvent(String transactionId,
OffsetContext offset) |
private static final org.slf4j.Logger LOGGER
private static final SchemaNameAdjuster schemaNameAdjuster
private static final String TOPIC_SUFFIX
public static final String DEBEZIUM_TRANSACTION_KEY
public static final String DEBEZIUM_TRANSACTION_ID_KEY
public static final String DEBEZIUM_TRANSACTION_TOTAL_ORDER_KEY
public static final String DEBEZIUM_TRANSACTION_DATA_COLLECTION_ORDER_KEY
public static final String DEBEZIUM_TRANSACTION_STATUS_KEY
public static final String DEBEZIUM_TRANSACTION_EVENT_COUNT_KEY
public static final String DEBEZIUM_TRANSACTION_COLLECTION_KEY
public static final String DEBEZIUM_TRANSACTION_DATA_COLLECTIONS_KEY
public static final org.apache.kafka.connect.data.Schema TRANSACTION_BLOCK_SCHEMA
private static final org.apache.kafka.connect.data.Schema TRANSACTION_KEY_SCHEMA
private static final org.apache.kafka.connect.data.Schema EVENT_COUNT_PER_DATA_COLLECTION_SCHEMA
private static final org.apache.kafka.connect.data.Schema TRANSACTION_VALUE_SCHEMA
private final EventMetadataProvider eventMetadataProvider
private final String topicName
private final BlockingConsumer<org.apache.kafka.connect.source.SourceRecord> sender
private final CommonConnectorConfig connectorConfig
public TransactionMonitor(CommonConnectorConfig connectorConfig, EventMetadataProvider eventMetadataProvider, BlockingConsumer<org.apache.kafka.connect.source.SourceRecord> sender)
public void dataEvent(DataCollectionId source, OffsetContext offset, Object key, org.apache.kafka.connect.data.Struct value) throws InterruptedException
InterruptedExceptionpublic void transactionComittedEvent(OffsetContext offset) throws InterruptedException
InterruptedExceptionpublic void transactionStartedEvent(String transactionId, OffsetContext offset) throws InterruptedException
InterruptedExceptionprivate void transactionEvent(OffsetContext offsetContext, DataCollectionId source, org.apache.kafka.connect.data.Struct value)
private void beginTransaction(OffsetContext offsetContext) throws InterruptedException
InterruptedExceptionprivate void endTransaction(OffsetContext offsetContext) throws InterruptedException
InterruptedExceptionCopyright © 2020 JBoss by Red Hat. All rights reserved.