summaryrefslogtreecommitdiff
path: root/src/rabbit_trace.erl
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-05-20 16:17:16 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-05-20 16:17:16 +0100
commit8e01c9b20223d9ae91212bd6fe9e067153d0c124 (patch)
tree2963ccd738f44848d431ad79abdc8cc5d0e272a7 /src/rabbit_trace.erl
parent48839e8428559495ec7d9b43068a5caef3ca4418 (diff)
downloadrabbitmq-server-8e01c9b20223d9ae91212bd6fe9e067153d0c124.tar.gz
Optimise looking up trace exchange and message construction.
Diffstat (limited to 'src/rabbit_trace.erl')
-rw-r--r--src/rabbit_trace.erl32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/rabbit_trace.erl b/src/rabbit_trace.erl
index 6228c54e..e0681f15 100644
--- a/src/rabbit_trace.erl
+++ b/src/rabbit_trace.erl
@@ -44,17 +44,21 @@ init(VHost) ->
{ok, XNs} = application:get_env(rabbit, ?TRACE_EXCHANGES),
case proplists:get_value(VHost, XNs, none) of
none -> none;
- Name -> rabbit_misc:r(VHost, exchange, Name)
+ Name -> case rabbit_exchange:lookup(
+ rabbit_misc:r(VHost, exchange, Name)) of
+ {ok, X} -> X;
+ _ -> none
+ end
end.
tap_trace_in(Msg = #basic_message{exchange_name = #resource{name = XName}},
- TraceXN) ->
- maybe_trace(TraceXN, Msg, <<"publish">>, XName, []).
+ TraceX) ->
+ maybe_trace(TraceX, Msg, <<"publish">>, XName, []).
tap_trace_out({#resource{name = QName}, _QPid, _QMsgId, Redelivered, Msg},
- TraceXN) ->
+ TraceX) ->
RedeliveredNum = case Redelivered of true -> 1; false -> 0 end,
- maybe_trace(TraceXN, Msg, <<"deliver">>, QName,
+ maybe_trace(TraceX, Msg, <<"deliver">>, QName,
[{<<"redelivered">>, signedint, RedeliveredNum}]).
%%----------------------------------------------------------------------------
@@ -76,20 +80,16 @@ update_config(Fun) ->
maybe_trace(none, _Msg, _RKPrefix, _RKSuffix, _Extra) ->
ok;
-maybe_trace(XName, #basic_message{exchange_name = #resource{name = XName}},
+maybe_trace(#exchange{name = Name}, #basic_message{exchange_name = Name},
_RKPrefix, _RKSuffix, _Extra) ->
ok;
-maybe_trace(XName, Msg = #basic_message{content = #content{
- payload_fragments_rev = PFR}},
+maybe_trace(X, Msg = #basic_message{content = #content{
+ payload_fragments_rev = PFR}},
RKPrefix, RKSuffix, Extra) ->
- case rabbit_basic:publish(XName,
- <<RKPrefix/binary, ".", RKSuffix/binary>>,
- #'P_basic'{headers = msg_to_table(Msg) ++ Extra},
- list_to_binary(lists:reverse(PFR))) of
- {ok, _, _} -> ok;
- {error, not_found} -> rabbit_log:info("trace ~s not found~n",
- [rabbit_misc:rs(XName)])
- end.
+ {ok, _, _} = rabbit_basic:republish(
+ X, <<RKPrefix/binary, ".", RKSuffix/binary>>,
+ #'P_basic'{headers = msg_to_table(Msg) ++ Extra}, PFR),
+ ok.
msg_to_table(#basic_message{exchange_name = #resource{name = XName},
routing_keys = RoutingKeys,