Skip to content

Example: Avro + external SPI JAR (S3 readiness marker)

Runs the Avro output pipeline with PostgreSQL CDC, Schema Registry, MinIO, and the Avro app image while loading readiness-marker SPI implementation from a separate JAR mounted on the runtime classpath. The container enables SPI classpath loading via SPI_EXT_DIR=/work/spi.

Stack details

Item Value
Example directory examples/avro-spi-s3-readiness
Compose file examples/avro-spi-s3-readiness/docker-compose.yml
App image local/debezium-postgres2lake-avro:${IMAGE_TAG:-0.1.0}
App config file examples/avro-spi-s3-readiness/config/application.properties
SPI extension JAR source extensions/readiness-marker-event-emitter-s3

Build SPI JAR and place it on classpath

From repository root:

./gradlew :extensions:readiness-marker-event-emitter-s3:jar
mkdir -p examples/avro-spi-s3-readiness/extensions-jars
cp extensions/readiness-marker-event-emitter-s3/build/libs/*.jar examples/avro-spi-s3-readiness/extensions-jars/

Run

cd examples/avro-spi-s3-readiness
docker compose up -d

Generate demo traffic

docker compose cp ../common/python-scripts/generate_data.py jupyter:/tmp/generate_data.py
docker compose exec jupyter python /tmp/generate_data.py

Verify readiness markers and AVRO output

docker compose logs app | rg "readiness|S3ReadinessMarkerEventEmitterProvider"
docker compose exec mc mc ls --recursive local/warehouse/readiness-markers
docker compose exec mc mc ls --recursive local/warehouse/postgres/public/demo_orders