diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2010-07-19 17:39:40 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2010-07-19 17:39:40 +0100 |
commit | 4734f1a664ec4a91769beca9f87ea52216b61451 (patch) | |
tree | 8b8931f34d8cf11aa7a870a80d0b2b61f8810718 | |
parent | 2bc1bc06e8a15f32d65413f4aacd3c1a3c929feb (diff) | |
download | rabbitmq-server-4734f1a664ec4a91769beca9f87ea52216b61451.tar.gz |
Lifecycle events for queues, exchanges and bindings.
-rw-r--r-- | src/rabbit_amqqueue_process.erl | 13 | ||||
-rw-r--r-- | src/rabbit_exchange.erl | 13 |
2 files changed, 23 insertions, 3 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 6222bd7a..82a8916c 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -85,13 +85,15 @@ backing_queue_status ]). --define(INFO_KEYS, +-define(CREATION_EVENT_KEYS, [name, durable, auto_delete, arguments, - owner_pid] ++ - ?STATISTICS_KEYS). + owner_pid + ]). + +-define(INFO_KEYS, ?CREATION_EVENT_KEYS ++ ?STATISTICS_KEYS). %%---------------------------------------------------------------------------- @@ -150,6 +152,10 @@ declare(Recover, From, self(), {rabbit_amqqueue, set_ram_duration_target, [self()]}), BQS = BQ:init(QName, IsDurable, Recover), + rabbit_event:notify( + queue_created, + [{Item, i(Item, State)} || + Item <- [pid|?CREATION_EVENT_KEYS]]), noreply(State#q{backing_queue_state = BQS}); Q1 -> {stop, normal, {existing, Q1}, State} end. @@ -168,6 +174,7 @@ terminate_shutdown(Fun, State) -> BQ:tx_rollback(Txn, BQSN), BQSN1 end, BQS, all_ch_record()), + rabbit_event:notify(queue_deleted, [{pid, self()}]), State1#q{backing_queue_state = Fun(BQS1)} end. diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index d91ebe9b..0bb0419d 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -190,6 +190,9 @@ declare(ExchangeName, Type, Durable, AutoDelete, Args) -> end end) of {new, X} -> TypeModule:create(X), + rabbit_event:notify( + exchange_created, + [{Item, i(Item, Exchange)} || Item <- ?INFO_KEYS]), X; {existing, X} -> X; Err -> Err @@ -437,6 +440,11 @@ add_binding(ExchangeName, QueueName, RoutingKey, Arguments, InnerFun) -> X#exchange.durable andalso Q#amqqueue.durable, fun mnesia:write/3), + rabbit_event:notify( + binding_created, + [{exchange_name, ExchangeName}, + {queue_name, QueueName}, + {routing_key, RoutingKey}]), {new, X, B}; [_R] -> {existing, X, B} @@ -469,6 +477,10 @@ delete_binding(ExchangeName, QueueName, RoutingKey, Arguments, InnerFun) -> X#exchange.durable andalso Q#amqqueue.durable, fun mnesia:delete_object/3), + rabbit_event:notify( + binding_deleted, + [{exchange_name, ExchangeName}, + {queue_name, QueueName}]), {maybe_auto_delete(X), B}; {error, _} = E -> E @@ -587,6 +599,7 @@ unconditional_delete(Exchange = #exchange{name = ExchangeName}) -> Bindings = delete_exchange_bindings(ExchangeName), ok = mnesia:delete({rabbit_durable_exchange, ExchangeName}), ok = mnesia:delete({rabbit_exchange, ExchangeName}), + rabbit_event:notify(exchange_deleted, [{name, ExchangeName}]), {deleted, Exchange, Bindings}. %%---------------------------------------------------------------------------- |