rabbitmq boot system

21
RabbitMQ Boot System Alvaro Videla - Zürich Erlang User Group Wednesday, December 12, 12

Upload: alvaro-videla

Post on 22-Apr-2015

2.757 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Rabbitmq Boot System

RabbitMQ Boot SystemAlvaro Videla - Zürich Erlang User Group

Wednesday, December 12, 12

Page 2: Rabbitmq Boot System

About Me• Developer Advocate for Cloud Foundry

• Blog: http://videlalvaro.github.com/

• Twitter: @old_sound

Wednesday, December 12, 12

Page 3: Rabbitmq Boot System

About Me

Co-authored

RabbitMQ in Action

http://bit.ly/rabbitmq

Wednesday, December 12, 12

Page 4: Rabbitmq Boot System

RabbitMQ

Wednesday, December 12, 12

Page 5: Rabbitmq Boot System

Quick Demo

Wednesday, December 12, 12

Page 6: Rabbitmq Boot System

RabbitMQ Boot Steps

https://github.com/videlalvaro/rabbit-internals/blob/master/rabbit_boot_process.md

Wednesday, December 12, 12

Page 7: Rabbitmq Boot System

RabbitMQ Boot Steps

Take care of starting the many sub systems that compose RabbitMQ

respecting order and dependencies

Wednesday, December 12, 12

Page 8: Rabbitmq Boot System

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

Page 9: Rabbitmq Boot System

Subsystems

• external infrastructure

• kernel (rabbit kernel)

• core

• routing

Wednesday, December 12, 12

Page 10: Rabbitmq Boot System

RabbitMQ Boot Steps

Wednesday, December 12, 12

Page 11: Rabbitmq Boot System

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

Page 12: Rabbitmq Boot System

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

Page 13: Rabbitmq Boot System

RabbitMQ Boot Steps

-rabbit_boot_step({external_infrastructure, [{description, "external infrastructure ready"}]}).

Grouping Boot Steps

Wednesday, December 12, 12

Page 14: Rabbitmq Boot System

RabbitMQ Boot Steps

How do they actually work?

Wednesday, December 12, 12

Page 15: Rabbitmq Boot System

Magic

Wednesday, December 12, 12

Page 16: Rabbitmq Boot System

Erlang Modules

-module(m). % module attribute-export([fact/1]). % module attribute-behaviour(Behaviour). % module attribute

Wednesday, December 12, 12

Page 17: Rabbitmq Boot System

Module Attributes

-Tag(Value).

Wednesday, December 12, 12

Page 18: Rabbitmq Boot System

RabbitMQ Boot Steps

- rabbit_misc:all_module_attributes/1- rabbit_misc:module_attributes/1

Wednesday, December 12, 12

Page 19: Rabbitmq Boot System

RabbitMQ Boot Steps

- rabbit:boot_steps/0- rabbit:sort_bootsteps/1- rabbit_misc:build_acyclic_graph/3

Wednesday, December 12, 12

Page 20: Rabbitmq Boot System

RabbitMQ Boot Steps

• Add order

• Add flexibility

• Very powerful tool

• Hidden gem in the Erlang world

Wednesday, December 12, 12

Page 21: Rabbitmq Boot System

Thanks!

Wednesday, December 12, 12