rabbitmq boot system
DESCRIPTION
TRANSCRIPT
RabbitMQ Boot SystemAlvaro Videla - Zürich Erlang User Group
Wednesday, December 12, 12
About Me• Developer Advocate for Cloud Foundry
• Blog: http://videlalvaro.github.com/
• Twitter: @old_sound
Wednesday, December 12, 12
About Me
Co-authored
RabbitMQ in Action
http://bit.ly/rabbitmq
Wednesday, December 12, 12
RabbitMQ
Wednesday, December 12, 12
Quick Demo
Wednesday, December 12, 12
RabbitMQ Boot Steps
https://github.com/videlalvaro/rabbit-internals/blob/master/rabbit_boot_process.md
Wednesday, December 12, 12
RabbitMQ Boot Steps
Take care of starting the many sub systems that compose RabbitMQ
respecting order and dependencies
Wednesday, December 12, 12
RabbitMQ Boot Steps
Take care of starting the many sub systems that compose RabbitMQ
respecting order and dependencies
brainchild of @leastfixedpoint
Wednesday, December 12, 12
Subsystems
• external infrastructure
• kernel (rabbit kernel)
• core
• routing
Wednesday, December 12, 12
RabbitMQ Boot Steps
Wednesday, December 12, 12
RabbitMQ Boot Steps
-rabbit_boot_step({recovery, [{description,
"exchange, queue and binding recovery"},
{mfa, {rabbit, recover, []}}, {requires, empty_db_check}, {enables, routing_ready}]}).
Wednesday, December 12, 12
RabbitMQ Boot Steps
-rabbit_boot_step({msg_store_bitcask_index, [{description, "Bitcask Index for rabbit_msg_store"}, {mfa, {application, set_env, [rabbit, msg_store_index_module, ?MODULE]}}, {enables, recovery}]}).
Modify Configuration at Startup
Wednesday, December 12, 12
RabbitMQ Boot Steps
-rabbit_boot_step({external_infrastructure, [{description, "external infrastructure ready"}]}).
Grouping Boot Steps
Wednesday, December 12, 12
RabbitMQ Boot Steps
How do they actually work?
Wednesday, December 12, 12
Magic
Wednesday, December 12, 12
Erlang Modules
-module(m). % module attribute-export([fact/1]). % module attribute-behaviour(Behaviour). % module attribute
Wednesday, December 12, 12
Module Attributes
-Tag(Value).
Wednesday, December 12, 12
RabbitMQ Boot Steps
- rabbit_misc:all_module_attributes/1- rabbit_misc:module_attributes/1
Wednesday, December 12, 12
RabbitMQ Boot Steps
- rabbit:boot_steps/0- rabbit:sort_bootsteps/1- rabbit_misc:build_acyclic_graph/3
Wednesday, December 12, 12
RabbitMQ Boot Steps
• Add order
• Add flexibility
• Very powerful tool
• Hidden gem in the Erlang world
Wednesday, December 12, 12
Thanks!
Wednesday, December 12, 12