Event Listener
Introductionâ
The SeaTunnel provides a rich event listening feature that allows you to manage the status at which data is synchronized.
This functionality is crucial when you need to listen job running status(org.apache.seatunnel.api.event
).
This document will guide you through the usage of these parameters and how to leverage them effectively.
Support Those Enginesâ
SeaTunnel Zeta
Flink
Spark
APIâ
The event API is defined in the org.apache.seatunnel.api.event
package.
Event Data APIâ
org.apache.seatunnel.api.event.Event
- The interface for event data.org.apache.seatunnel.api.event.EventType
- The enum for event type.
Event Listener APIâ
You can customize event handler, such as sending events to external systems
org.apache.seatunnel.api.event.EventHandler
- The interface for event handler, SPI will automatically load subclass from the classpath.
Event Collect APIâ
org.apache.seatunnel.api.source.SourceSplitEnumerator
- Attached event listener API to report events fromSourceSplitEnumerator
.
package org.apache.seatunnel.api.source;
public interface SourceSplitEnumerator {
interface Context {
/**
* Get the {@link org.apache.seatunnel.api.event.EventListener} of this enumerator.
*
* @return
*/
EventListener getEventListener();
}
}
org.apache.seatunnel.api.source.SourceReader
- Attached event listener API to report events fromSourceReader
.
package org.apache.seatunnel.api.source;
public interface SourceReader {
interface Context {
/**
* Get the {@link org.apache.seatunnel.api.event.EventListener} of this reader.
*
* @return
*/
EventListener getEventListener();
}
}
org.apache.seatunnel.api.sink.SinkWriter
- Attached event listener API to report events fromSinkWriter
.
package org.apache.seatunnel.api.sink;
public interface SinkWriter {
interface Context {
/**
* Get the {@link org.apache.seatunnel.api.event.EventListener} of this writer.
*
* @return
*/
EventListener getEventListener();
}
}
Configuration Listenerâ
To use the event listening feature, you need to configure engine config.
Zeta Engineâ
Example config in your config file(seatunnel.yaml):
seatunnel:
engine:
event-report-http:
url: "http://example.com:1024/event/report"
headers:
Content-Type: application/json
Flink Engineâ
You can define the implementation class of org.apache.seatunnel.api.event.EventHandler
interface and add to the classpath to automatically load it through SPI.
Support flink version: 1.14.0+
Example: org.apache.seatunnel.api.event.LoggingEventHandler
Spark Engineâ
You can define the implementation class of org.apache.seatunnel.api.event.EventHandler
interface and add to the classpath to automatically load it through SPI.