RabbitMQ
- 5. LShift?
BBC, MS, Yahoo, T-Mobile, Vodafone
Erlang
Java C#
RabbitMQ
- 6. C# Java
Publisher Subscriber
...
- 10. tcp_listener.erl, tcp_acceptor.erl
prim_inet:async_accept
tcp_listener_sup.erl, tcp_acceptor_sup.erl
one_for_all
simple_one_for_one
gen_server2, priority_queue
pcall, pcast
priority_queue:new, priority_queue:in/out
- 11. rabbit_log.erl
error_logger
gen_server
rabbit_control.erl
init:get_plain_arguments
rabbit_tests.erl
rabbit_error_logger.erl
gen_event
- 13. !"#$%&'!()(*$'+#
'+#(*,&'-*
-)($1-*$.%%
-)($1-*$.%%
!"#$%&'!()(* !"#$.""(#!-*$'+#
/-*0(* '+#(*,&'-*
'&2#%($-)($1-*$-)(
!"#$.""(#!-*
/-*0(*
- 15. simple_one_for_one
one_for_one supervisor:append_child
ChildSpec
ListenSocket start_child
supervisor:start_child(tcp_acceptor_sup, [LSock])
module, function, [Arg1, Arg2] ++ [LSock]
- 17. rabbit_control.erl
erl -extra
init:get_plain_arguments()
-s module function arg1 arg2 arg3 ...
default function ... start
-noinput, -hidden, -sname(MUST DNS)
erlang:list_to_atom(Commnad)
...(add_user, Node, ...)
- 18. fun(I) when .. -> ... (I) when ...
case A of _ when is_record(B) -> ; _ when
is_integer(C) -> ; ... .
- 22. rabbit_tests
common_test EUnit
test_topic_matching
passed = test_topic_match(“#”, “test.test”)
passed = test_topic_match(“#.test”, “test”)
Cluster Log
- 23. gen_server2 & priority_queue
gen_server2:pcall/3, pcall/4, pcast/3
pcall(Name, Priority, Request)
pcall(Name, Priority, Request, Timeout)
pcast({Name, Node}, Priority, Request)
call/cast
- 24. gen_server2
gen_server call cast
gen_server2 priority_queue
priority