rdt-model-event
rdt-model-event publishes events to the Solace enterprise event bus when a data product is created or updated. Downstream consumers can subscribe to these events to react to data product lifecycle changes — for example, triggering dependent pipeline refreshes or notifications.
Pipeline phase: Phase 6 — Support
Access status: Resolved (2026-05-07) — client certificate auth confirmed working.
cargo run -p rdt-model-event -- --target dev publish --entity waste-tracking --dry-runConfiguration
Section titled “Configuration”All credentials are loaded from Vault via source scripts/vault-env.sh.
| Variable | Source | Description |
|---|---|---|
SOLACE_BROKER_URL | Vault secret/{target}/solace | Broker REST endpoint |
SOLACE_CLIENT_CERT | Vault secret/{target}/solace | PEM certificate (full chain) |
SOLACE_CLIENT_KEY | Vault secret/{target}/solace | PEM private key |
SOLACE_TOPIC | Vault secret/{target}/solace | Target topic for events |
SOLACE_USER | Vault secret/{target}/solace | Broker user (RXPMODE0) |
Automatic Execution Events
Section titled “Automatic Execution Events”In addition to explicit lifecycle event publishing, every CLI module automatically publishes a lightweight execution event to Solace after completing its run. This is handled by the shared events module in rdt-model-common — individual modules do not implement this themselves.
Execution Event Payload
Section titled “Execution Event Payload”{ "module": "rdt-model-pull", "run_id": "019600ab-cdef-7123-89ab-0123456789ab", "status": "ok", "entity_id": "waste-tracking", "duration_ms": 1247, "timestamp": "2026-05-07T14:23:01.123Z", "target": "dev"}How It Works
Section titled “How It Works”- Every module calls
cli.global.publish_context(&config)to create aPublishContext - When
ModuleResultBuilder::finish(&ctx)is called, it automatically publishes the event - Publishing is fire-and-forget — failures are logged as warnings but never crash the module
- In dry-run mode or without Solace credentials configured, publishing is silently skipped
Run ID Correlation
Section titled “Run ID Correlation”The --run-id flag (or RDT_RUN_ID env var) provides a UUIDv7 correlation ID. When the orchestrator (rdt-model-compile) runs multiple modules in parallel, it passes the same run ID to all children, enabling correlation of events from a single pipeline execution.
Compile-Time Enforcement
Section titled “Compile-Time Enforcement”The finish() method requires a &PublishContext parameter. Any module that omits it will not compile — this ensures no module can skip event publishing.
Pharma/Tech/Solace/InterLayer/PRC/1/RSVD/RSVD/Created/v1/SYS/CLI-EXECUTEAuthentication
Section titled “Authentication”Client certificate (PEM) via reqwest::Identity::from_pkcs8_pem(). Certificate is issued by Roche G3 Issuing CA 3, CN=RXPMODE0, expires 2028-05-05.
Dependencies
Section titled “Dependencies”All Phase 5 Register modules should complete first.
Output
Section titled “Output”Event published to Solace topic (no local file output).
Access Verification
Section titled “Access Verification”./scripts/check-solace-access.sh # dev./scripts/check-solace-access.sh test # test