Changelog
View SourceAll notable changes to this project are documented here. The format follows Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.1.0 - 2026-05-18
Initial public release.
Added
PhiAccrualAmqp.Consumer— AMQP 0-9-1 consumer with connection/channel lifecycle, server-cancel handling, and exponential-backoff reconnect between:reconnect_min_ms(default 1s) and:reconnect_max_ms(default 30s). Feeds broker deliveries toPhiAccrual.observe/2using local monotonic receipt time.PhiAccrualAmqp.Envelope— pure projection from AMQP delivery metadata to aPhiAccrual.detector_key/0. Configurable:key_resolver, defaulting torouting_key.- Consumer-only by design — no synthetic heartbeat publisher is shipped, to avoid conflating broker liveness with node liveness.
- Telemetry events under
[:phi_accrual_amqp, ...]:[:connection, :up | :down],[:consumer, :registered | :cancelled],[:sample, :received], and[:extract, :error]. - Broker-backed integration suite, gated behind the
:integrationExUnit tag. - Requires
phi_accrual ~> 1.1(forPhiAccrual.detector_key/0).
Notes
- AMQP 0-9-1 only (RabbitMQ-class brokers). Not compatible with AMQP 1.0 brokers such as ActiveMQ Artemis, Apache Qpid, Azure Service Bus, or Solace — AMQP 1.0 is a different, incompatible protocol.
- Alpha. Public API and telemetry schema may change before
v1.0based on real-deployment feedback. - Known. The
[:sample, :received]telemetry payload is not drop-in compatible withphi_accrual_udp— see the README cross-transport note for the shape differences. The channel-death:unexpected_delivery_and_no_default_consumerlog surfaced byamqp_client'sSelectiveConsumeris an expected, tolerated reconnect race; the Consumer recovers via the normal reconnect path.