summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Watson <tim@rabbitmq.com>2013-06-06 10:31:09 +0100
committerTim Watson <tim@rabbitmq.com>2013-06-06 10:31:09 +0100
commit7f84407e046c979f798e9c685303a7d03ec9c40e (patch)
tree735f394879a401107a06787394b314b5d140250c
parent195ba43314f1ca208bd31edda4d18d9072d871a0 (diff)
downloadrabbitmq-server-7f84407e046c979f798e9c685303a7d03ec9c40e.tar.gz
add original expiration to x-death headers on per-message-ttl expiry
-rw-r--r--src/rabbit_amqqueue_process.erl14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index f7d14381..ed15b6f5 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,