diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2012-02-24 12:19:29 +0000 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2012-02-24 12:19:29 +0000 |
| commit | 948082ce50fbaaa204f1f4337568390a822590a9 (patch) | |
| tree | b8baf3f2f9f1a8458422deacf9eb507143cb1128 /src | |
| parent | 8f931704288ff3a926d4711a5c9bc3cdc9dc626d (diff) | |
| download | rabbitmq-server-git-948082ce50fbaaa204f1f4337568390a822590a9.tar.gz | |
dead-lettering to a deleted exchange outputs an error and disables dead-lettering for that queue
=WARNING REPORT==== 24-Feb-2012::12:17:18 ===
Dead-letter-exchange <<"dead.letter.exchange">> for queue
<<"test.queue.dead.letter">> does not exist. Disabling DLX for this queue.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_amqqueue_process.erl | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 73cd599b90..ed6ae9b96b 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -733,14 +733,29 @@ dead_letter_fun(Reason, _State) -> gen_server2:cast(self(), {dead_letter, {Msg, AckTag}, Reason}) end. -dead_letter_msg(Msg, AckTag, Reason, - State = #q{publish_seqno = MsgSeqNo, - unconfirmed_mq = UMQ, - dlx = DLX, - backing_queue = BQ, - backing_queue_state = BQS}) -> - rabbit_exchange:lookup_or_die(DLX), +dead_letter_msg(Msg, AckTag, Reason, State = #q{dlx = undefined}) -> + %% Dead-lettring already disabled for this queue. + noreply(State); +dead_letter_msg(Msg, AckTag, Reason, State = #q{dlx = DLX}) -> + case rabbit_exchange:lookup(DLX) of + {error, not_found} -> + #resource{name = QName} = qname(State), + #resource{name = XName} = DLX, + rabbit_log:warning("Dead-letter-exchange ~p for queue ~p does " ++ + "not exist. Disabling DLX for this queue.~n", + [XName, QName]), + noreply(State#q{dlx = undefined, + dlx_routing_key = undefined}); + _ -> + dead_letter_msg_existing_dlx(Msg, AckTag, Reason, State) + end. +dead_letter_msg_existing_dlx(Msg, AckTag, Reason, + State = #q{publish_seqno = MsgSeqNo, + unconfirmed_mq = UMQ, + dlx = DLX, + backing_queue = BQ, + backing_queue_state = BQS}) -> {ok, _, QPids} = rabbit_basic:publish( rabbit_basic:delivery( |
