Rabbitmq Boot System

Preview:

DESCRIPTION

 

Citation preview

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