diff options
| author | Tim Watson <tim@rabbitmq.com> | 2013-06-06 10:31:09 +0100 |
|---|---|---|
| committer | Tim Watson <tim@rabbitmq.com> | 2013-06-06 10:31:09 +0100 |
| commit | 72097478eb948bec654af86f6b235bdb89a7c47a (patch) | |
| tree | 735f394879a401107a06787394b314b5d140250c | |
| parent | ad70c448410dd02df6a357374a2977cebcbda706 (diff) | |
| download | rabbitmq-server-git-72097478eb948bec654af86f6b235bdb89a7c47a.tar.gz | |
add original expiration to x-death headers on per-message-ttl expiry
| -rw-r--r-- | src/rabbit_amqqueue_process.erl | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index f7d143819e..ed15b6f5fd 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -898,6 +898,18 @@ make_dead_letter_msg(Msg = #basic_message{content = Content, end, ReasonBin = list_to_binary(atom_to_list(Reason)), TimeSec = rabbit_misc:now_ms() div 1000, + MaybePerMsgTTL = + case Reason of + expired -> + OrigProps = Content#content.properties, + case rabbit_basic:parse_expiration(OrigProps) of + {ok, Exp} when is_integer(Exp) -> + [{<<"original-expiration">>, longstr, + integer_to_list(Exp)}]; + _ -> [] + end; + _ -> [] + end, HeadersFun2 = fun (Headers) -> %% The first routing key is the one specified in the @@ -908,7 +920,7 @@ make_dead_letter_msg(Msg = #basic_message{content = Content, {<<"queue">>, longstr, QName}, {<<"time">>, timestamp, TimeSec}, {<<"exchange">>, longstr, Exchange#resource.name}, - {<<"routing-keys">>, array, RKs1}], + {<<"routing-keys">>, array, RKs1}] ++ MaybePerMsgTTL, HeadersFun1(rabbit_basic:prepend_table_header(<<"x-death">>, Info, Headers)) end, |
