JMS acknowledge modes as implemented in Infor Process Automation

Only AUTO_ACKNOWLEDGE and CLIENT_ACKNOWLEDGE message acknowledgement modes are supported.

CLIENT_ACKNOWLEDGE

If CLIENT_ACKNOWLEDGE mode is used, precautions are exercised to prevent more than one workunit being created for the same message in cases where a message may be redelivered.

When a message is received, a workunit is created but it is not released for processing until the message is successfully acknowledged. If the message is not acknowledged or the attempt to acknowledge the message fails, the workunit (if it has been successfully created), is deleted. The reason for this is the assumption that, when the message is redelivered, it will be processed successfully and a workunit will be created and triggered. This logic prevents processing of the same message more than once (and multiple workunits from being created).

Precautions are also exercised to protect from loss of messages which are received but are not processed successfully. If a message cannot be processed successfully, it is not acknowledged and the receiver will stop processing any subsequent messages. The receiver also automatically requests self-deactivation. This logic prevents the loss of messages that could occur if the receiver were to acknowledge any subsequent message. An exception is messages of unsupported message types that are received. These are always acknowledged so the provider does not try to send the message again.

These safeguards might not be as effective in Publish/Subscribe messaging scenarios as they would be for Point-to-Point messaging scenarios.

AUTO_ACKNOWLEDGE

If AUTO_ACKNOWLEDGE mode is used, no precautions are exercised to prevent more than one workunit being created for the same message in cases where a message may be redelivered. Neither do precautions exist to prevent loss of received messages that have not been processed successfully.