diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2012-04-11 15:17:46 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2012-04-11 15:17:46 +0100 |
commit | 03d32eeded42110d0b61de29d02f632e98bd4842 (patch) | |
tree | 0280668cbea13cb9acaec0a0807c01cfa9ee0018 | |
parent | 02a8e0520c2f0d879c66ce9de04ab9b9675236ca (diff) | |
download | rabbitmq-server-03d32eeded42110d0b61de29d02f632e98bd4842.tar.gz |
Optimise routing for the default exchange.
-rw-r--r-- | src/rabbit_exchange.erl | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index 83e28c44..39fccec3 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -242,6 +242,12 @@ info_all(VHostPath) -> map(VHostPath, fun (X) -> info(X) end). info_all(VHostPath, Items) -> map(VHostPath, fun (X) -> info(X, Items) end). +%% Optimisation +route(#exchange{name = #resource{name = <<"">>, virtual_host = VHost}}, + #delivery{message = #basic_message{routing_keys = RKs}}) -> + QNames = [rabbit_misc:r(VHost, queue, RK) || RK <- RKs], + [QName || #amqqueue{name = QName} <- rabbit_amqqueue:lookup(QNames)]; + route(X = #exchange{name = XName}, Delivery) -> route1(Delivery, {queue:from_list([X]), XName, []}). |