Skip to main content
The pipeline publishes event notifications after each destination loader completes. Notifications are sent to an ActiveMQ Virtual Topic and can be consumed by any number of independent subscribers.

How It Works

The pipeline uses ActiveMQ’s Virtual Destinations pattern:
  1. Each destination loader (PostgreSQL, MongoDB, Snowflake, Databricks, Kafka, ActiveMQ, Object Store, REST Endpoint, Qdrant, Weaviate, Milvus, Chroma, pgvector) publishes a notification to VirtualTopic.{environment}-pipeline-notification
  2. Consumers subscribe by creating a queue named Consumer.{name}.VirtualTopic.{environment}-pipeline-notification
  3. ActiveMQ automatically copies topic messages to all matching consumer queues
  4. Each consumer gets its own independent queue with its own message cursor
No subscription API is needed — consumers simply connect to their named queue.

Consuming Notifications

Queue Naming Convention

For example, with environment oss:
  • Consumer.analytics.VirtualTopic.oss-pipeline-notification
  • Consumer.audit-log.VirtualTopic.oss-pipeline-notification
  • Consumer.dashboard.VirtualTopic.oss-pipeline-notification
Each consumer queue receives a copy of every notification independently.

Quick Start: Python Consumer (Minimal)

Note: This is a minimal snippet. For a production-ready consumer with automatic reconnect, heartbeats, graceful shutdown, and configurable virtual topic support, see Topic Subscriber.

Example: Java/JMS Consumer

Message Filtering

Notifications include JMS message properties that can be used with JMS selectors for filtering: To filter, use a JMS selector when creating the consumer:

Notification Payload

Fields are populated based on the destination type. Unused fields are null.

Enabling Notifications

Notifications are enabled by default in application.yaml:
Set to "false" to disable all notifications.