Issue
The current AMQP publisher uses a confirm channel to ensure that messages are acknowledged (ACK) by the broker. However, this setup does not detect routing failures.
If the Publisher asserts an Exchange and no Queue is bound to it, but the Publisher goes on to publish message onto it via its Confirm Channel, then it will be silently dropped off, and no negative ack will be sent from the broker side. This creates a false sense of reliability , where the publisher assumes successful delivery even though the message was never routed to any queue.
Current Behavior
Publisher uses confirm channel:
err → reject()
no err → resolve()
Messages are marked as successfully published when ACK is received
Impact
-> Routing failures (no bound queue) still result in ACK
-> Messages are lost without any visibility or retry mechanism
-> Particularly problematic in the current architecture where queues are declared by consumers (late binding)
Expected Behavior
- Publisher should detect unroutable messages
- System should provide mechanisms to: Retry publishing, Log or persist failed events or Route messages to a fallback mechanism if needed
Issue
The current AMQP publisher uses a confirm channel to ensure that messages are acknowledged (ACK) by the broker. However, this setup does not detect routing failures.
If the Publisher asserts an Exchange and no Queue is bound to it, but the Publisher goes on to publish message onto it via its Confirm Channel, then it will be silently dropped off, and no negative ack will be sent from the broker side. This creates a false sense of reliability , where the publisher assumes successful delivery even though the message was never routed to any queue.
Current Behavior
Publisher uses confirm channel:
err → reject()no err → resolve()Messages are marked as successfully published when ACK is received
Impact
-> Routing failures (no bound queue) still result in ACK
-> Messages are lost without any visibility or retry mechanism
-> Particularly problematic in the current architecture where queues are declared by consumers (late binding)
Expected Behavior