Hi, let's imagine a Sender application sending an unsettled message to the Qpid dispatch router and a Receiver application (usually) consuming and settling it.
The sender is interested in the outcome of the delivery and waits for the disposition update. But the sender shall not wait forever. So, after a configured time period with no received disposition update, the sender considers the delivery to be failed and stops waiting. If the sender doesn't do anything with the delivery in such a scenario and the receiver doesn't send an disposition update later on either, it looks like the delivery will be kept "in flight" in the router for as long as the link lives. And if that happens for as many messages as the configured link capacity in the router, the client will get no credits anymore for sending further messages (even if the receiver has sent credits in the meantime). The question is now how to handle such a case (receiver not sending a disposition in time) from the sender side, basically canceling the delivery. Would it be the recommended approach to release and settle the delivery from the sender then? I don't see such a scenario to be explicitly referred to in the AMQP spec, but I don't see it disallowing this approach either. And I guess the example in the description of the Released outcome [1] could be seen as somewhat similar: --- The source MAY spontaneously attain the released outcome for a message (for example the source might implement some sort of time-bound acquisition lock, after which the acquisition of a message at a node is revoked to allow for delivery to an alternative consumer). --- The Qpid router seems to handle this disposition frame from the sender in the expected way, forwarding it to the receiver. So, would that be the recommended way to handle this case? [1] http://docs.oasis-open.org/amqp/core/v1.0/amqp-core-complete-v1.0.pdf#subsection.3.4.4 Best regards Carsten Lohmann Bosch IoT Hub - Product Area IoT Platform (IOC/PAP-HU) Bosch.IO GmbH | Ullsteinstr. 128 | 12109 Berlin | GERMANY | www.bosch.io Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr. Stefan Ferber, Dr. Aleksandar Mitrovic, Yvonne Reckling --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
