@@ -64,7 +64,7 @@ do_it(ReqData0, Context) ->
6464 end ,
6565
6666 Reply = basic_gets (Count , Ch , Q , AckMode , Enc , Trunc ),
67- maybe_rejects (Reply , Ch , AckMode ),
67+ maybe_return (Reply , Ch , AckMode ),
6868 rabbit_mgmt_util :reply (remove_delivery_tag (Reply ),
6969 ReqData , Context )
7070 end )
@@ -96,11 +96,11 @@ parse_ackmode(reject_requeue_true) -> false.
9696% the messages must rejects later,
9797% because we get always the same message if the
9898% messages are requeued inside basic_get/5
99- maybe_rejects (R , Ch , AckMode ) ->
99+ maybe_return (R , Ch , AckMode ) ->
100100 lists :foreach (fun (X ) ->
101- maybe_reject (Ch , AckMode ,
102- proplists :get_value (delivery_tag , X ))
103- end , R ).
101+ maybe_reject_or_nack (Ch , AckMode ,
102+ proplists :get_value (delivery_tag , X ))
103+ end , R ).
104104
105105% removes the delivery_tag from the reply.
106106% it is not necessary
@@ -109,12 +109,18 @@ remove_delivery_tag([H|T]) ->
109109 [proplists :delete (delivery_tag , H ) | [X || X <- remove_delivery_tag (T )]].
110110
111111
112- maybe_reject (Ch , AckMode , DeliveryTag ) when AckMode == reject_requeue_true ;
113- AckMode == reject_requeue_false ->
112+ maybe_reject_or_nack (Ch , AckMode , DeliveryTag )
113+ when AckMode == reject_requeue_true ;
114+ AckMode == reject_requeue_false ->
114115 amqp_channel :call (Ch ,
115- # 'basic.reject' {delivery_tag = DeliveryTag ,
116- requeue = ackmode_to_requeue (AckMode )});
117- maybe_reject (_Ch , _AckMode , _DeliveryTag ) -> ok .
116+ # 'basic.reject' {delivery_tag = DeliveryTag ,
117+ requeue = ackmode_to_requeue (AckMode )});
118+ maybe_reject_or_nack (Ch , ack_requeue_true , DeliveryTag ) ->
119+ amqp_channel :call (Ch ,
120+ # 'basic.nack' {delivery_tag = DeliveryTag ,
121+ multiple = false ,
122+ requeue = true });
123+ maybe_reject_or_nack (_Ch , _AckMode , _DeliveryTag ) -> ok .
118124
119125
120126basic_get (Ch , Q , AckMode , Enc , Trunc ) ->
0 commit comments