@@ -100,10 +100,6 @@ public class ChannelN extends AMQChannel implements com.rabbitmq.client.Channel
100100 */
101101 public volatile Consumer defaultConsumer = null ;
102102
103- /** Internal ConfirmListener used to keep track of unacknowledged
104- * messages. */
105- protected volatile ConfirmListener firstConfirmListener ;
106-
107103 /** Set of currently unconfirmed messages (i.e. messages that have
108104 * not been ack'd or nack'd by the server yet. */
109105 protected volatile SortedSet <Long > unconfirmedSet =
@@ -123,24 +119,6 @@ public class ChannelN extends AMQChannel implements com.rabbitmq.client.Channel
123119 */
124120 public ChannelN (AMQConnection connection , int channelNumber ) {
125121 super (connection , channelNumber );
126-
127- firstConfirmListener = new ConfirmListener () {
128- public void handleAck (long seqNo , boolean multiple )
129- throws IOException
130- {
131- if (confirmListener != null )
132- confirmListener .handleAck (seqNo , multiple );
133- handleAckNack (seqNo , multiple , false );
134- }
135-
136- public void handleNack (long seqNo , boolean multiple )
137- throws IOException
138- {
139- if (confirmListener != null )
140- confirmListener .handleNack (seqNo , multiple );
141- handleAckNack (seqNo , multiple , true );
142- }
143- };
144122 }
145123
146124 /**
@@ -376,18 +354,22 @@ public void releaseChannelNumber() {
376354 } else if (method instanceof Basic .Ack ) {
377355 Basic .Ack ack = (Basic .Ack ) method ;
378356 try {
379- firstConfirmListener .handleAck (ack .getDeliveryTag (), ack .getMultiple ());
357+ if (confirmListener != null )
358+ confirmListener .handleAck (ack .getDeliveryTag (), ack .getMultiple ());
380359 } catch (Throwable ex ) {
381360 _connection .getExceptionHandler ().handleConfirmListenerException (this , ex );
382361 }
362+ handleAckNack (ack .getDeliveryTag (), ack .getMultiple (), false );
383363 return true ;
384364 } else if (method instanceof Basic .Nack ) {
385365 Basic .Nack nack = (Basic .Nack ) method ;
386366 try {
387- firstConfirmListener .handleNack (nack .getDeliveryTag (), nack .getMultiple ());
367+ if (confirmListener != null )
368+ confirmListener .handleNack (nack .getDeliveryTag (), nack .getMultiple ());
388369 } catch (Throwable ex ) {
389370 _connection .getExceptionHandler ().handleConfirmListenerException (this , ex );
390371 }
372+ handleAckNack (nack .getDeliveryTag (), nack .getMultiple (), true );
391373 return true ;
392374 } else if (method instanceof Basic .RecoverOk ) {
393375 for (Consumer callback : _consumers .values ()) {
0 commit comments