summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorArthur Khashaev <arthur@khashaev.ru>2019-05-23 20:38:28 +0300
committerArthur Khashaev <arthur@khashaev.ru>2019-05-27 22:34:52 +0300
commit89f464f04fc0dd23ce112b647f84b5e83ee5166f (patch)
treefbf4e548da8a40a4a13a60b128e530ab72c9084f /test
parentfcae7368286fa50b7cacfb34509eff07362e4df9 (diff)
downloadrabbitmq-server-git-89f464f04fc0dd23ce112b647f84b5e83ee5166f.tar.gz
Add an option to dead-letter rejected publishes
Add `reject-publish-dlx` overflow strategy, which is similar to `reject-publish` strategy, but also dead-letters rejected messages. Closes #1443
Diffstat (limited to 'test')
-rw-r--r--test/dead_lettering_SUITE.erl33
1 files changed, 30 insertions, 3 deletions
diff --git a/test/dead_lettering_SUITE.erl b/test/dead_lettering_SUITE.erl
index 6fe2a3a522..fe5e91c8ed 100644
--- a/test/dead_lettering_SUITE.erl
+++ b/test/dead_lettering_SUITE.erl
@@ -60,13 +60,15 @@ groups() ->
{dead_letter_tests, [],
[
{classic_queue, [parallel], DeadLetterTests ++ [dead_letter_ttl,
+ dead_letter_max_length_reject_publish_dlx,
dead_letter_routing_key_cycle_ttl,
dead_letter_headers_reason_expired,
dead_letter_headers_reason_expired_per_message]},
{mirrored_queue, [parallel], DeadLetterTests ++ [dead_letter_ttl,
- dead_letter_routing_key_cycle_ttl,
- dead_letter_headers_reason_expired,
- dead_letter_headers_reason_expired_per_message]},
+ dead_letter_max_length_reject_publish_dlx,
+ dead_letter_routing_key_cycle_ttl,
+ dead_letter_headers_reason_expired,
+ dead_letter_headers_reason_expired_per_message]},
{quorum_queue, [parallel], DeadLetterTests}
]}
].
@@ -381,6 +383,31 @@ dead_letter_max_length_drop_head(Config) ->
_ = consume(Ch, DLXQName, [P1, P2]),
consume_empty(Ch, DLXQName).
+%% Another strategy: reject-publish-dlx
+dead_letter_max_length_reject_publish_dlx(Config) ->
+ {_Conn, Ch} = rabbit_ct_client_helpers:open_connection_and_channel(Config, 0),
+ QName = ?config(queue_name, Config),
+ DLXQName = ?config(queue_name_dlx, Config),
+
+ declare_dead_letter_queues(Ch, Config, QName, DLXQName,
+ [{<<"x-max-length">>, long, 1},
+ {<<"x-overflow">>, longstr, <<"reject-publish-dlx">>}]),
+
+ P1 = <<"msg1">>,
+ P2 = <<"msg2">>,
+ P3 = <<"msg3">>,
+
+ %% Publish 3 messages
+ publish(Ch, QName, [P1, P2, P3]),
+ %% Consume the first one from the queue (max-length = 1)
+ wait_for_messages(Config, [[QName, <<"1">>, <<"1">>, <<"0">>]]),
+ _ = consume(Ch, QName, [P1]),
+ consume_empty(Ch, QName),
+ %% Consume the dropped ones from the dead letter queue
+ wait_for_messages(Config, [[DLXQName, <<"2">>, <<"2">>, <<"0">>]]),
+ _ = consume(Ch, DLXQName, [P2, P3]),
+ consume_empty(Ch, DLXQName).
+
%% Dead letter exchange does not have to be declared when the queue is declared, but it should
%% exist by the time messages need to be dead-lettered; if it is missing then, the messages will
%% be silently dropped.