The client acknowledgement docs for JMS can be misleading:
bufferSize does not actually have an effect (maxPendingAcks is the closest analogue)
- if
CLIENT_ACKNOWLEDGE is in use, the spec for acknowledge calls for the "acknowledge all delivered messages in the session" semantics which the docs only say apply "in many cases": this in turn implies that 'at-least-once' processing requires maxPendingAcks of zero and calling acknowledge at some point for every envelope (as it's possible to effectively acknowledge messages before the envelope is even emitted by the source)
It may be also be useful to implement an ackSource for CLIENT_ACKNOWLEDGE mode which is imposes that mode, an effective maxPendingAcks of 0 and which optimizes for an assumption that acknowledge is called for every message.
The client acknowledgement docs for JMS can be misleading:
bufferSizedoes not actually have an effect (maxPendingAcksis the closest analogue)CLIENT_ACKNOWLEDGEis in use, the spec foracknowledgecalls for the "acknowledge all delivered messages in the session" semantics which the docs only say apply "in many cases": this in turn implies that 'at-least-once' processing requiresmaxPendingAcksof zero and callingacknowledgeat some point for every envelope (as it's possible to effectively acknowledge messages before the envelope is even emitted by the source)It may be also be useful to implement an
ackSourceforCLIENT_ACKNOWLEDGEmode which is imposes that mode, an effectivemaxPendingAcksof 0 and which optimizes for an assumption thatacknowledgeis called for every message.