zerodds-amqp-bridge-daemon v1.0 — Spec-Coverage
Quelle: docs/specs/zerodds-amqp-bridge-daemon-1.0.md
§1 Conformance-Levels
§1 L1-L6 Conformance-Matrix
Spec: §1 — sechs Levels (Wire/DDS/Bridging/Config/Auth/Multi- Tenant); L1–L4 Pflicht, L5–L6 optional.
Repo: —
Tests: —
Status: n/a (informative)
§2 CLI-Surface
§2 zerodds-amqp-bridged CLI
Spec: §2 — Optionen --config/--broker/--container-id/
--domain/--sasl-mechanism/--user/--password/--tls-*/--topic/
--log-level/--metrics/--version/--help; Exit-Codes 0/1/2/3/4/5/6.
Repo: crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs.
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs::version_flag_emits_one_line_and_exits_zero,
::missing_broker_url_fails_with_exit_1,
::daemon_with_no_broker_fails_with_exit_2,
::daemon_opens_and_attaches_link.
Status: done
§3 Config-File-Format
§3 YAML-Loader mit ENV-Substitution
Spec: §3 — Top-Level domain/amqp/topics/acl/metrics;
ENV-Substitution ${VAR} und ${VAR:-default}.
Repo: crates/amqp-endpoint/src/config_xml.rs (Loader-Plumbing),
crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs (CLI-Config-
Mapping), crates/amqp-endpoint/src/mapping.rs.
Tests: Inline #[cfg(test)] mod tests in config_xml.rs,
mapping.rs.
Status: done
§4 AMQP-Wire-Protocol
§4.1 Connection-Open mit Properties + Capabilities
Spec: §4.1 — OPEN-Performative mit container-id/hostname/
max-frame-size/channel-max/idle-time-out/properties (zerodds_version,
zerodds_role)/desired-+offered-capabilities ["AMQP_DDS_BRIDGE"].
Repo: crates/amqp-endpoint/src/session.rs,
crates/amqp-endpoint/src/properties.rs,
crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs.
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs::daemon_opens_and_attaches_link.
Status: done
§4.2 Session + Link-Setup ATTACH
Spec: §4.2 — ATTACH role=sender|receiver pro Topic-Direction,
name/source/target, snd-/rcv-settle-mode, properties (zerodds_topic/
zerodds_type), desired-capabilities ["dds.cdr2"].
Repo: crates/amqp-endpoint/src/link.rs,
crates/amqp-endpoint/src/session.rs,
crates/amqp-endpoint/src/properties.rs.
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs::daemon_opens_and_attaches_link.
Status: done
§4.3 TRANSFER-Frame DDS→AMQP
Spec: §4.3 — TRANSFER mit delivery-id/-tag/message-format/settled
+ Header (durable/priority/ttl)/Properties (message-id/subject/
content-type)/ApplicationProperties (zerodds_*)/BodySection mit
[0x00,0x07,0x00,0x00] + CDR-Bytes.
Repo: crates/amqp-endpoint/src/link.rs (transfer encoder),
crates/amqp-endpoint/src/dds_bridge.rs,
crates/amqp-endpoint/src/properties.rs.
Tests: Inline #[cfg(test)] mod tests in link.rs,
dds_bridge.rs; bridge_e2e.rs::daemon_opens_and_attaches_link.
Status: done
§4.4 TRANSFER-Frame AMQP→DDS + DISPOSITION
Spec: §4.4 — Receiver-Link mit FLOW-Credit, Decoder
Body-Section→CDR→DDS-Sample; DISPOSITION accepted/rejected/
released.
Repo: crates/amqp-endpoint/src/link.rs,
crates/amqp-endpoint/src/routing.rs,
crates/amqp-endpoint/src/dds_bridge.rs.
Tests: Inline #[cfg(test)] mod tests in link.rs, routing.rs.
Status: done
§4.5 Disposition-Mapping accepted/rejected/released/modified
Spec: §4.5 — AMQP-Outcome → DDS-Behavior; modified retry mit delivery-count.
Repo: crates/amqp-endpoint/src/link.rs,
crates/amqp-endpoint/src/rpc_correlation.rs.
Tests: Inline #[cfg(test)] mod tests deckt Outcome-Map.
Status: done
§5 Topic-Mapping
§5.1 Address-Default Broker-spezifisch
Spec: §5.1 — RabbitMQ/ActiveMQ/Qpid-Dispatch-Defaults; Override per
amqp_address.
Repo: crates/amqp-endpoint/src/mapping.rs,
crates/amqp-endpoint/src/routing.rs.
Tests: Inline #[cfg(test)] mod tests in mapping.rs.
Status: done
§5.2 Catalog auf zerodds.bridge..catalog
Spec: §5.2 — Catalog-Address mit topics-Liste.
Repo: crates/amqp-endpoint/src/management.rs,
crates/amqp-endpoint/src/daemon_runtime.rs (Catalog-Address Cluster-
A-Wireup),
crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs.
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs (Catalog-
Address-Subscriber via Cluster-A-Wireup).
Status: done
§6 QoS-Translation
§6 DDS-QoS → AMQP-Behavior Map
Spec: §6 — Reliability/Durability/History/Lifespan/Deadline/ Liveliness/Partition Map; settled-mode-Auto-Derivation.
Repo: crates/amqp-endpoint/src/mapping.rs,
crates/amqp-endpoint/src/dds_bridge.rs,
crates/amqp-endpoint/src/qos_translation.rs (Cluster-A QoS-Map
Reliability/Durability/History/Lifespan/Deadline/Liveliness/Partition).
Tests: Inline #[cfg(test)] mod tests in mapping.rs und
qos_translation.rs; QoS-Matrix-Coverage in
crates/amqp-endpoint/src/qos_translation.rs::tests.
Status: done
§7 Security
§7.1 TLS amqps:// + ALPN
Spec: §7.1 — amqps:// per amqp.tls.enabled, ALPN ["amqp"].
Repo: crates/amqp-endpoint/src/security.rs,
crates/amqp-endpoint/src/bridge_security.rs,
crates/bridge-security/src/tls.rs.
Tests: crates/amqp-endpoint/tests/security_e2e.rs (amqps + ALPN-
Verify + Cert-Rotation via Cluster-B-Foundation).
Status: done
§7.2 SASL PLAIN/SCRAM/EXTERNAL/ANONYMOUS/XOAUTH2
Spec: §7.2 — SASL-Mechanism-Auswahl pro Config.
Repo: crates/amqp-endpoint/src/sasl.rs,
crates/amqp-endpoint/src/bridge_security.rs,
crates/bridge-security/src/auth.rs.
Tests: Inline #[cfg(test)] mod tests in sasl.rs (PLAIN +
ANONYMOUS); crates/amqp-endpoint/tests/security_e2e.rs (SCRAM-SHA-
256/512 + EXTERNAL + XOAUTH2 via Cluster-B-Wireup).
Status: done
§7.3 ACL Daemon-Side
Spec: §7.3 — Subject = SASL-Identity oder TLS-DN; Filter vor TRANSFER.
Repo: crates/amqp-endpoint/src/security.rs,
crates/amqp-endpoint/src/bridge_security.rs,
crates/bridge-security/src/acl.rs,
crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs.
Tests: crates/amqp-endpoint/tests/security_e2e.rs (ACL-
Enforcement gegen Subject-Matrix).
Status: done
§8 Operations + Observability
§8.1 Strukturiertes JSON-Logging
Spec: §8.1 — JSON-Log + --log-level-Switch.
Repo: crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs.
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs (log-level Args).
Status: done
§8.2 Prometheus-Metrics
Spec: §8.2 — --metrics-CLI + 13 Counter/Gauge-Familien.
Repo: crates/amqp-endpoint/src/metrics.rs,
crates/amqp-endpoint/src/daemon_runtime.rs (Cluster-A Counter/Gauge-
Familien Wireup),
crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs.
Tests: Inline #[cfg(test)] mod tests in metrics.rs;
crates/amqp-endpoint/tests/bridge_e2e.rs (/metrics-Endpoint via
Cluster-A-Wireup).
Status: done
§8.3 OTLP-Spans
Spec: §8.3 — OTEL_EXPORTER_OTLP_ENDPOINT aktiviert
TRANSFER-Roundtrip-Span.
Repo: crates/amqp-endpoint/src/daemon_runtime.rs (OTLP-Init via
zerodds-observability-otlp),
crates/amqp-endpoint/src/link.rs (Span-Emit pro TRANSFER).
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs (Daemon-Spawn
mit OTEL_EXPORTER_OTLP_ENDPOINT).
Status: done
§9 Lifecycle
§9.1 Startup-Sequence
Spec: §9.1 — Config → TLS → DCPS → Reader/Writer → AMQP-Open + SASL + TLS → SESSION + ATTACH → Signal-Handler.
Repo: crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs,
crates/amqp-endpoint/src/session.rs.
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs::daemon_opens_and_attaches_link.
Status: done
§9.2 Shutdown SIGTERM/SIGINT/SIGHUP
Spec: §9.2 — Graceful Drain max 30 s, DETACH/END/CLOSE; SIGHUP TLS+ACL-Reload.
Repo: crates/amqp-endpoint/src/session.rs,
crates/amqp-endpoint/src/link.rs,
crates/amqp-endpoint/src/daemon_runtime.rs (SIGTERM/SIGINT/SIGHUP
via Cluster-A-Signal-Handler),
crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs.
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs (Daemon-Stop),
crates/amqp-endpoint/tests/security_e2e.rs (SIGHUP-Reload TLS+ACL).
Status: done
§9.3 Reconnect
Spec: §9.3 — Exponential-Backoff; Unsettled-Deliveries Re-Attempt.
Repo: crates/amqp-endpoint/src/session.rs,
crates/amqp-endpoint/src/backoff.rs (Cluster-C Reconnect-Backoff),
crates/amqp-endpoint/src/limits.rs.
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs::daemon_with_no_broker_fails_with_exit_2
(Connect-Failure); Cluster-C Reconnect-Sequence in
crates/amqp-endpoint/tests/bridge_e2e.rs (Mock-Broker disconnect →
Re-Attempt).
Status: done
§10 Cross-Vendor
§10 RTPS-Peer + RabbitMQ/Artemis/Qpid/Solace/ServiceBus
Spec: §10 — Daemon ist normaler RTPS-Peer; AMQP-Seite gegen RabbitMQ/Artemis/Qpid-Dispatch/Solace/Azure ServiceBus.
Repo: crates/amqp-endpoint/src/coexistence.rs.
Tests: crates/amqp-endpoint/tests/e2e_multi_bridge_hop.rs (Multi-
Hop-Test mit Mock-Broker),
crates/amqp-endpoint/tests/cross_vendor.rs (Cluster-C Cross-Vendor
RabbitMQ/Artemis/Qpid/Solace/ServiceBus-Matrix).
Status: done
§11 Packaging
§11 Linux/macOS/Windows/Docker Layout
Spec: §11 — Binary zerodds-amqp-bridged; Configs/Services/Docker;
Manuals.
Repo: packaging/linux/systemd/zerodds-amqp-bridged.service,
packaging/macos/launchd/org.zerodds.amqp-bridged.plist,
packaging/macos/homebrew/zerodds-amqp-bridge.rb,
packaging/windows/services/Install-Services.ps1,
packaging/docker/amqp-bridged/,
packaging/linux/configs/amqp-bridged.yaml.example,
man/man1/zerodds-amqp-bridged.1,
man/man5/zerodds-amqp-bridged.yaml.5.
Tests: —
Status: done
§12 Testing
§12.1 Unit-Tests pro Modul
Spec: §12.1 — config/amqp_codec/link_state/disposition/sasl/ dds_pump/acl je ≥ 5 Tests.
Repo: crates/amqp-endpoint/src/{session.rs,link.rs,routing.rs,sasl.rs,security.rs,mapping.rs,properties.rs,metrics.rs,limits.rs,annex_a.rs,management.rs,rpc_correlation.rs,coexistence.rs,keyhash.rs,errors.rs,dds_bridge.rs}.
Tests: Inline #[cfg(test)] mod tests pro Modul; Property-Tests
in crates/amqp-endpoint/tests/proptest_state_machine.rs.
Status: done
§12.2 Integration-Tests bridge_e2e
Spec: §12.2 — Spawn Daemon, RabbitMQ via testcontainers, Roundtrip + DISPOSITION-Sequence.
Repo: crates/amqp-endpoint/src/bin/zerodds-amqp-bridged.rs.
Tests: crates/amqp-endpoint/tests/bridge_e2e.rs::daemon_opens_and_attaches_link,
::daemon_with_no_broker_fails_with_exit_2,
::version_flag_emits_one_line_and_exits_zero,
::missing_broker_url_fails_with_exit_1;
crates/amqp-endpoint/tests/e2e_multi_bridge_hop.rs.
Status: done
§12.3 Multi-Vendor cross_vendor.rs
Spec: §12.3 — Cyclone-DDS-Subscriber + RabbitMQ + ZeroDDS-AMQP- Bridge im Compose; Broker-Matrix RabbitMQ/Artemis/Qpid/Solace/ ServiceBus.
Repo: crates/amqp-endpoint/src/coexistence.rs,
crates/amqp-endpoint/tests/cross_vendor.rs (Cluster-C Cross-Vendor-
Harness).
Tests: crates/amqp-endpoint/tests/e2e_multi_bridge_hop.rs (Mock-
Broker), crates/amqp-endpoint/tests/cross_vendor.rs (RabbitMQ/
Artemis/Qpid/Solace/ServiceBus-Matrix via Cluster-C).
Status: done
§13 Cross-References
§13 Verwandte Library + OMG-Spec + Standards
Spec: §13 — Library crates/amqp-bridge/ + crates/amqp-endpoint/,
OMG-DDS-AMQP-1.0, ISO/IEC 19464:2014, Wire-Format, Deployment.
Repo: —
Tests: —
Status: n/a (informative)
§14 Versioning
§14 SemVer-Bump-Regeln
Spec: §14 — Patch=Bugfixes, Minor=additive Config, Major=Wire- Protocol-Change (AMQP-1.0→2).
Repo: —
Tests: —
Status: n/a (informative)
Audit-Status
24 done / 0 partial / 0 open / 3 n/a (informative) / 0 n/a (rejected).
Test-Lauf: cargo test -p zerodds-amqp-endpoint — Tests grün, 0 failed.
Offene Punkte und Decision-Records: siehe zerodds-amqp-bridge-daemon-1.0.open.md.