Holodeck B2B is an AS4 system-to-system messaging solution that implements the OASIS specifications for ebMS3 and it's AS4 profile. For more information visit the project website
When the current processing state of a User Messages is TRANSPORT_FAILURE it will be resent by RetransmissionWorker but when a Receipt is received for that same User Message it will not be processed by the ProcessReceipts handler and the message will stay in the TRANSPORT_FAILURE state.
This can leave a User Message in "failed" state when the last resend of the message fails, even if a Receipt is later received (most likely to happen on large messages where a "read time-out" occurs because the receiver takes too long to process the message and send the Receipt).
Therefore the ProcessReceipts and RetransmissionWorker should use the same set of processing states to determine whether a message is or could be waiting for a receipt.
When the current processing state of a User Messages is
TRANSPORT_FAILURE
it will be resent byRetransmissionWorker
but when a Receipt is received for that same User Message it will not be processed by theProcessReceipts
handler and the message will stay in theTRANSPORT_FAILURE
state. This can leave a User Message in "failed" state when the last resend of the message fails, even if a Receipt is later received (most likely to happen on large messages where a "read time-out" occurs because the receiver takes too long to process the message and send the Receipt).Therefore the
ProcessReceipts
andRetransmissionWorker
should use the same set of processing states to determine whether a message is or could be waiting for a receipt.