This PR has the changes to enable link recovery on the Amqp Client library. Below are some of the major changes:
Concept of LinkTerminus that is associated with a link that helps with preserving the link information and the unsettled deliveries associated with the link.
Mechanisms to preserve the link state when link is closed.
Mechanisms to retrieve the stored link state and resend deliveries when a link with the same link identifer is created.
Mechanisms for negotiations of unsettled deliveries between two peers according to the AMQP spec.
To test the changes mentioned above, new tests and mock broker changes were added:
Added tests to ensure that link recovery works E2E from both sender and receiver perspective.
Added tests to verify the exchange of unsettled deliveries map between the sender and receiver resulted in the desired unsettled deliveries to be resent by the sender.
Introduced a new hook to the test broker and test connection to allow tests to verify that the AMQP frames received by the connection are correct and in desired order.
Added tests to verify that linkStealing behavior works as expected in both linkRecovery and non-link recovery case.
Note:
The results of exchanging unsettled deliveries between the sender and receiver follow the spec outlined by the OASIS AMQP standard section 3.4.6.
This PR has the changes to enable link recovery on the Amqp Client library. Below are some of the major changes:
To test the changes mentioned above, new tests and mock broker changes were added:
Note: The results of exchanging unsettled deliveries between the sender and receiver follow the spec outlined by the OASIS AMQP standard section 3.4.6.