diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2017-09-07 06:51:31 -0700 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2017-09-07 06:51:31 -0700 |
| commit | 96cd56a9d040ffeeeb62c95b84826c1f021a3ebc (patch) | |
| tree | 7b6ff97168b256c6271dcabf899bf2f1b3a1a722 /src | |
| parent | cfc5bde7d40c40a96a094ed0f849ef4f98ff6406 (diff) | |
| download | rabbitmq-server-git-96cd56a9d040ffeeeb62c95b84826c1f021a3ebc.tar.gz | |
Introduce x-first-death-{exchange,queue,reason}
They can be used to route dead lettered messages using a headers exchange.
Part of #1332.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_dead_letter.erl | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/rabbit_dead_letter.erl b/src/rabbit_dead_letter.erl index ca4871d2e0..d185e95edd 100644 --- a/src/rabbit_dead_letter.erl +++ b/src/rabbit_dead_letter.erl @@ -113,13 +113,22 @@ group_by_queue_and_reason(Tables) -> Grouped. update_x_death_header(Info, Headers) -> + X = x_death_event_key(Info, <<"exchange">>), Q = x_death_event_key(Info, <<"queue">>), R = x_death_event_key(Info, <<"reason">>), case rabbit_basic:header(<<"x-death">>, Headers) of undefined -> + %% First x-death event gets its own top-level headers. + %% See rabbitmq/rabbitmq-server#1332. + Headers2 = rabbit_misc:set_table_value(Headers, <<"x-first-death-reason">>, + longstr, R), + Headers3 = rabbit_misc:set_table_value(Headers2, <<"x-first-death-queue">>, + longstr, Q), + Headers4 = rabbit_misc:set_table_value(Headers3, <<"x-first-death-exchange">>, + longstr, X), rabbit_basic:prepend_table_header( <<"x-death">>, - [{<<"count">>, long, 1} | Info], Headers); + [{<<"count">>, long, 1} | Info], Headers4); {<<"x-death">>, array, Tables} -> %% group existing x-death headers in case we have some from %% before rabbitmq-server#78 |
