Skip to content

Commit a01b6a7

Browse files
Merge pull request #9721 from rabbitmq/mergify/bp/v3.11.x/pr-9720
Actually nack when using 'Nack message requeue true' (backport #9715) (backport #9720)
2 parents 05db76e + 49168c9 commit a01b6a7

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

deps/rabbitmq_management/src/rabbit_mgmt_wm_queue_get.erl

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

120126
basic_get(Ch, Q, AckMode, Enc, Trunc) ->

0 commit comments

Comments
 (0)