summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_binding.erl2
-rw-r--r--src/rabbit_exchange_type.erl6
-rw-r--r--src/rabbit_exchange_type_direct.erl5
-rw-r--r--src/rabbit_exchange_type_fanout.erl5
-rw-r--r--src/rabbit_exchange_type_headers.erl5
-rw-r--r--src/rabbit_exchange_type_topic.erl5
6 files changed, 12 insertions, 16 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index d2767d158d..d363e3427a 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -449,7 +449,7 @@ pd_callback(Arg, CB, X, Bindings) ->
ok = rabbit_exchange:callback(X, CB, [Arg, X, Bindings]).
serial(X) ->
- case rabbit_exchange:callback(X, serialise_events, []) of
+ case rabbit_exchange:callback(X, serialise_events, [X]) of
true -> next_serial(X);
false -> none
end.
diff --git a/src/rabbit_exchange_type.erl b/src/rabbit_exchange_type.erl
index b34d1aec5b..670551de08 100644
--- a/src/rabbit_exchange_type.erl
+++ b/src/rabbit_exchange_type.erl
@@ -22,10 +22,10 @@ behaviour_info(callbacks) ->
[
{description, 0},
- %% Should Rabbit ensure that all events delivered to this
- %% exchange can be serialised (they might still be delivered out
+ %% Should Rabbit ensure that all events delivered to an individual exchange
+ %% this can be serialised? (they might still be delivered out
%% of order, but there'll be a serial number).
- {serialise_events, 0},
+ {serialise_events, 1},
{route, 2},
diff --git a/src/rabbit_exchange_type_direct.erl b/src/rabbit_exchange_type_direct.erl
index d1ea62f38e..bc7a76e30b 100644
--- a/src/rabbit_exchange_type_direct.erl
+++ b/src/rabbit_exchange_type_direct.erl
@@ -19,7 +19,7 @@
-behaviour(rabbit_exchange_type).
--export([description/0, route/2, serialise_events/0]).
+-export([description/0, route/2, serialise_events/1]).
-export([validate/1, create/2, recover/2, delete/3,
add_binding/3, remove_bindings/3, assert_args_equivalence/2]).
-include("rabbit_exchange_type_spec.hrl").
@@ -35,12 +35,11 @@ description() ->
[{name, <<"direct">>},
{description, <<"AMQP direct exchange, as per the AMQP specification">>}].
-serialise_events() -> false.
-
route(#exchange{name = Name},
#delivery{message = #basic_message{routing_keys = Routes}}) ->
rabbit_router:match_routing_key(Name, Routes).
+serialise_events(_X) -> false.
validate(_X) -> ok.
create(_Tx, _X) -> ok.
recover(_X, _Bs) -> ok.
diff --git a/src/rabbit_exchange_type_fanout.erl b/src/rabbit_exchange_type_fanout.erl
index 9b6e68d826..2e70fb24f2 100644
--- a/src/rabbit_exchange_type_fanout.erl
+++ b/src/rabbit_exchange_type_fanout.erl
@@ -19,7 +19,7 @@
-behaviour(rabbit_exchange_type).
--export([description/0, route/2, serialise_events/0]).
+-export([description/0, route/2, serialise_events/1]).
-export([validate/1, create/2, recover/2, delete/3, add_binding/3,
remove_bindings/3, assert_args_equivalence/2]).
-include("rabbit_exchange_type_spec.hrl").
@@ -35,11 +35,10 @@ description() ->
[{name, <<"fanout">>},
{description, <<"AMQP fanout exchange, as per the AMQP specification">>}].
-serialise_events() -> false.
-
route(#exchange{name = Name}, _Delivery) ->
rabbit_router:match_routing_key(Name, ['_']).
+serialise_events(_X) -> false.
validate(_X) -> ok.
create(_Tx, _X) -> ok.
recover(_X, _Bs) -> ok.
diff --git a/src/rabbit_exchange_type_headers.erl b/src/rabbit_exchange_type_headers.erl
index 1480afc847..1e8b0687a0 100644
--- a/src/rabbit_exchange_type_headers.erl
+++ b/src/rabbit_exchange_type_headers.erl
@@ -20,7 +20,7 @@
-behaviour(rabbit_exchange_type).
--export([description/0, route/2, serialise_events/0]).
+-export([description/0, route/2, serialise_events/1]).
-export([validate/1, create/2, recover/2, delete/3, add_binding/3,
remove_bindings/3, assert_args_equivalence/2]).
-include("rabbit_exchange_type_spec.hrl").
@@ -41,8 +41,6 @@ description() ->
[{name, <<"headers">>},
{description, <<"AMQP headers exchange, as per the AMQP specification">>}].
-serialise_events() -> false.
-
route(#exchange{name = Name},
#delivery{message = #basic_message{content = Content}}) ->
Headers = case (Content#content.properties)#'P_basic'.headers of
@@ -114,6 +112,7 @@ headers_match([{PK, PT, PV} | PRest], [{DK, DT, DV} | DRest],
end,
headers_match(PRest, DRest, AllMatch1, AnyMatch1, MatchKind).
+serialise_events(_X) -> false.
validate(_X) -> ok.
create(_Tx, _X) -> ok.
recover(_X, _Bs) -> ok.
diff --git a/src/rabbit_exchange_type_topic.erl b/src/rabbit_exchange_type_topic.erl
index 9a9cbc47ad..2f77b8385c 100644
--- a/src/rabbit_exchange_type_topic.erl
+++ b/src/rabbit_exchange_type_topic.erl
@@ -20,7 +20,7 @@
-behaviour(rabbit_exchange_type).
--export([description/0, route/2, serialise_events/0]).
+-export([description/0, route/2, serialise_events/1]).
-export([validate/1, create/2, recover/2, delete/3, add_binding/3,
remove_bindings/3, assert_args_equivalence/2]).
-include("rabbit_exchange_type_spec.hrl").
@@ -38,8 +38,6 @@ description() ->
[{name, <<"topic">>},
{description, <<"AMQP topic exchange, as per the AMQP specification">>}].
-serialise_events() -> false.
-
%% NB: This may return duplicate results in some situations (that's ok)
route(#exchange{name = X},
#delivery{message = #basic_message{routing_keys = Routes}}) ->
@@ -48,6 +46,7 @@ route(#exchange{name = X},
mnesia:async_dirty(fun trie_match/2, [X, Words])
end || RKey <- Routes]).
+serialise_events(_X) -> false.
validate(_X) -> ok.
create(_Tx, _X) -> ok.