Skip to content

Commit

Permalink
Add dead-letter-strategy fields to Management UI
Browse files Browse the repository at this point in the history
  • Loading branch information
ansd committed Nov 16, 2021
1 parent 46dfda8 commit 1b2898e
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 10 deletions.
2 changes: 0 additions & 2 deletions deps/rabbit/src/rabbit_fifo.erl
Expand Up @@ -1720,8 +1720,6 @@ discard_one(MsgId, Msg, Reason, ConsumerId, #?MODULE{consumers = Consumers,
Con = Con0#consumer{checked_out = maps:remove(MsgId, Checked)},
Header = get_msg_header(Msg),
State1 = add_bytes_settle_or_discard(Header, State0),
%%TODO write correct dead letter headers including reason before putting msg into discard queue
%% see module rabbit_dead_letter
DlxState = rabbit_fifo_dlx:discard(Msg, Reason, DlxState0),
State1#?MODULE{consumers = Consumers#{ConsumerId => Con},
dlx = DlxState}.
Expand Down
2 changes: 2 additions & 0 deletions deps/rabbit/src/rabbit_fifo_dlx.erl
Expand Up @@ -27,6 +27,8 @@
%% At-least-once dead-lettering does not support reason 'maxlen'.
-type reason() :: 'expired' | 'rejected' | delivery_limit.

%%TODO Add logic to rabbit_fifo_dlx to dehydrate the state.
% See snapshot scenarios in rabbit_fifo_prop_SUITE. Add dlx dehydrate tests.
-record(dlx_consumer,{
%% We don't require a consumer tag because a consumer tag is a means to distinguish
%% multiple consumers in the same channel. The rabbit_fifo_dlx_worker channel like process however
Expand Down
5 changes: 3 additions & 2 deletions deps/rabbit/src/rabbit_policies.erl
Expand Up @@ -85,8 +85,9 @@ validate_policy0(<<"dead-letter-routing-key">>, Value)
validate_policy0(<<"dead-letter-routing-key">>, Value) ->
{error, "~p is not a valid dead letter routing key", [Value]};

validate_policy0(<<"dead-letter-strategy">>, Value)
when is_binary(Value) ->
validate_policy0(<<"dead-letter-strategy">>, <<"at-most-once">>) ->
ok;
validate_policy0(<<"dead-letter-strategy">>, <<"at-least-once">>) ->
ok;
validate_policy0(<<"dead-letter-strategy">>, Value) ->
{error, "~p is not a valid dead letter strategy", [Value]};
Expand Down
5 changes: 4 additions & 1 deletion deps/rabbitmq_management/priv/www/js/global.js
Expand Up @@ -218,6 +218,9 @@ var HELP = {
'queue-dead-letter-routing-key':
'Optional replacement routing key to use when a message is dead-lettered. If this is not set, the message\'s original routing key will be used.<br/>(Sets the "<a target="_blank" href="https://rabbitmq.com/dlx.html">x-dead-letter-routing-key</a>" argument.)',

'queue-dead-letter-strategy':
'Valid values are <code>at-most-once</code> or <code>at-least-once</code>. It defaults to <code>at-most-once</code>. This setting is understood only by quorum queues. If <code>at-least-once</code> is set, <code>Overflow behaviour</code> must be set to <code>reject-publish</code>. Otherwise, dead letter strategy will fall back to <code>at-most-once</code>.',

'queue-single-active-consumer':
'If set, makes sure only one consumer at a time consumes from the queue and fails over to another registered consumer in case the active one is cancelled or dies.<br/>(Sets the "<a target="_blank" href="https://rabbitmq.com/consumers.html#single-active-consumer">x-single-active-consumer</a>" argument.)',

Expand All @@ -243,7 +246,7 @@ var HELP = {
'Set the queue initial cluster size.',

'queue-type':
'Set the queue type, determining the type of queue to use: raft-based high availability or classic queue. Valid values are <code>quorum</code> or <code>classic</code>. It defaults to <code>classic<code>. <br/>',
'Set the queue type, determining the type of queue to use: raft-based high availability or classic queue. Valid values are <code>quorum</code> or <code>classic</code>. It defaults to <code>classic</code>. <br/>',

'queue-messages':
'<p>Message counts.</p><p>Note that "in memory" and "persistent" are not mutually exclusive; persistent messages can be in memory as well as on disc, and transient messages can be paged out if memory is tight. Non-durable queues will consider all messages to be transient.</p>',
Expand Down
9 changes: 5 additions & 4 deletions deps/rabbitmq_management/priv/www/js/tmpl/policies.ejs
Expand Up @@ -100,11 +100,10 @@
<td>
<span class="argument-link" field="definition" key="max-length" type="number">Max length</span> |
<span class="argument-link" field="definition" key="max-length-bytes" type="number">Max length bytes</span> |
<span class="argument-link" field="definition" key="overflow" type="string">Overflow behaviour</span>
<span class="argument-link" field="definition" key="overflow" type="string">Overflow behaviour</span> <span class="help" id="queue-overflow"></span></br>
<span class="argument-link" field="definition" key="expires" type="number">Auto expire</span> |
<span class="help" id="queue-overflow"></span> </br>
<span class="argument-link" field="definition" key="dead-letter-exchange" type="string">Dead letter exchange</span> |
<span class="argument-link" field="definition" key="dead-letter-routing-key" type="string">Dead letter routing key</span><br />
<span class="argument-link" field="definition" key="dead-letter-routing-key" type="string">Dead letter routing key</span><br/>
</td>
<tr>
<td>Queues [Classic]</td>
Expand All @@ -128,7 +127,9 @@
<span class="argument-link" field="definition" key="max-in-memory-bytes" type="number">Max in memory bytes</span>
<span class="help" id="queue-max-in-memory-bytes"></span> |
<span class="argument-link" field="definition" key="delivery-limit" type="number">Delivery limit</span>
<span class="help" id="delivery-limit"></span>
<span class="help" id="delivery-limit"></span></br>
<span class="argument-link" field="definition" key="dead-letter-strategy" type="string">Dead letter strategy</span>
<span class="help" id="queue-dead-letter-strategy"></span>
</td>
</tr>
<tr>
Expand Down
3 changes: 2 additions & 1 deletion deps/rabbitmq_management/priv/www/js/tmpl/queues.ejs
Expand Up @@ -333,7 +333,8 @@
<span class="argument-link" field="arguments" key="x-delivery-limit" type="number">Delivery limit</span><span class="help" id="delivery-limit"></span>
| <span class="argument-link" field="arguments" key="x-max-in-memory-length" type="number">Max in memory length</span><span class="help" id="queue-max-in-memory-length"></span>
| <span class="argument-link" field="arguments" key="x-max-in-memory-bytes" type="number">Max in memory bytes</span><span class="help" id="queue-max-in-memory-bytes"></span>
| <span class="argument-link" field="arguments" key="x-quorum-initial-group-size" type="number">Initial cluster size</span><span class="help" id="queue-quorum-initial-group-size"></span><br/>
| <span class="argument-link" field="arguments" key="x-quorum-initial-group-size" type="number">Initial cluster size</span><span class="help" id="queue-initial-cluster-size"></span><br/>
<span class="argument-link" field="arguments" key="x-dead-letter-strategy" type="string">Dead letter strategy</span><span class="help" id="queue-dead-letter-strategy"></span><br/>
<% } %>
<% if (queue_type == "stream") { %>
<span class="argument-link" field="arguments" key="x-max-age" type="string">Max time retention</span><span class="help" id="queue-max-age"></span>
Expand Down

0 comments on commit 1b2898e

Please sign in to comment.