Peter Smith wrote:
I've been looking at the ServiceMix version 1.0 source code.
I have a question. I do not understand the following AckHelper
processing in the DeliveryChannelImpl.processInBound method .
if (ack != null) {
ack.getMessageExchange().setPacket(packet); // WHY
IS THIS REQUIRED
ack.done();
}else {
My understanding (after debugging my simple configuration) is that the
ExchangePacket instance remains the same throughout the entire process
flow. So the packet instance in the ME held by the AckHelper is the
same packet instance that was in that ME when the
DeliveryChannelImpl.sendSync(ME) was done in the first place....
I'm confused. Can somebody shed some light on why this statement is
needed at all?
Thanks!
I also noticed that calling setPacket is side-effecting the source ME
status changing it from ACTIVE it to DONE. (because the packet has
status DONE set by the destination component - eg SaajBinding called
PojoSupport.done in my case).
But I can't quite convince myself that this was all deliberate.....