Skip to content

DeliveryTracker

TypedBus::DeliveryTracker

Tracks the delivery state of a single published message across N subscribers. Created per publish call.

Constructor

DeliveryTracker.new(message, channel_name:, subscriber_ids:)

Parameter Default Description
message required The published payload
channel_name required Originating channel name
subscriber_ids required Array<Integer> of subscriber IDs

Note

Trackers are created internally by Channel#publish. You don't normally construct them directly.

Attributes

messageObject

The published payload.

channel_nameSymbol

The originating channel.

Recording Responses

ack(subscriber_id)

Record an ACK from a subscriber. Checks for resolution after recording.

nack(subscriber_id)

Record a NACK from a subscriber. Fires the on_dead_letter callback. Checks for resolution after recording.

State

fully_delivered?Boolean

True when every subscriber has ACKed.

fully_resolved?Boolean

True when all subscribers have responded (acked or nacked).

pending_countInteger

Number of subscribers still pending.

Callbacks

on_complete { ... }

Called when all subscribers have resolved and every one ACKed (successful delivery).

on_resolved { ... }

Called when all subscribers have resolved, regardless of outcome. Used for cleanup (e.g., removing from pending map, signaling backpressure).

on_dead_letter { |subscriber_id| ... }

Called for each NACK, receiving the subscriber ID.