![Page 1: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/1.jpg)
Desacoplamento de Workflows com RabbitMQ
"A única maneira de fazer um excelente trabalho é amar o que você faz." (Steve Jobs)
![Page 2: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/2.jpg)
Bacana!! :)
![Page 3: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/3.jpg)
Clientes MundiPagg - 40% MarketShare
LOJAS DEPARTAMENTO MODA ENTRETENIMENTO ALIMENTOS
Temos mais de 1500 lojas em nosso portfólio, algumas delas são as maiores marcas brasileiras e internacionais.
ÓLEO TV
![Page 4: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/4.jpg)
Vamos dominar o mundo!!
![Page 5: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/5.jpg)
Quer jogar?
![Page 6: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/6.jpg)
Relaxa!! D boa, você vai achar a solução!
![Page 7: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/7.jpg)
{ Seja criativo!! :) =)
![Page 8: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/8.jpg)
Quer um café?
![Page 9: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/9.jpg)
![Page 10: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/10.jpg)
C# .Net
jQuery
PHP
Magento
Angular.js
Node.js
Gulp
Java
Ruby
SQL Server
MongoDB
Kibana
Log StashRedis
RabbitMQCassandra
Scala Akka.Net
Python
TFS
Git
ApacheJira
SentryMonitis
Python
New RelicAzure
Nosso Stack
MVC
REST
Web APIGo
![Page 11: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/11.jpg)
Vamos dominar o mundo!!!!
![Page 12: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/12.jpg)
Faça parte do nosso time!
"A única maneira de fazer um excelente trabalho é amar o que você faz." (Steve Jobs)
![Page 13: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/13.jpg)
Faça parte do nosso time!
{ TEMOS VAGAS }
"A única maneira de fazer um excelente trabalho é amar o que você faz." (Steve Jobs)
![Page 14: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/14.jpg)
Alexandre Brandão
{ Microsoft C# .Net Solution Developer, C++ Linux Developer, C/C++ Embedded Programmer }
<contatos> <twitter>
@abrandaolustosa </twitter> <skype>
[email protected] </skype></contatos>
Gestor de TIAnalista Desenvolvedor Sênior
Arquiteto de Sistemas
curl -data “experiencia=16_anos&motivacao=inovacao%20e%20pesquisa” https://www.mundipagg.com
![Page 15: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/15.jpg)
Message Broker
![Page 16: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/16.jpg)
“Definição” : “An enterprise service bus (ESB) is a software architecture model used for designing and implementing communication between mutually interacting software applications in a service-oriented architecture (SOA)”
{
}
![Page 17: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/17.jpg)
Integraçãode
Sistemas
![Page 18: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/18.jpg)
Recursos
![Page 19: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/19.jpg)
<wrong>Não utilize workflows centralizados e dependentes do banco de dados</wrong>
“Repense sua arquitetura”
![Page 20: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/20.jpg)
Pipeline – Service Bus
![Page 21: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/21.jpg)
{ Soluções – Service Bus }
- RabbitMQ- CloudAMQP (RabbitMQ)- Azure ServiceBus- IBM MQ Series- Amazon SQS- SQL Server Service Broker- Microsoft Message Queue- OpenShift- Kafka
![Page 22: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/22.jpg)
https://www.rabbitmq.com/
• Robust messaging for applications• Easy to use• Runs on all major operating systems• Supports a huge number of developer
platforms• Open source and commercially supported• Multiplatform for Windows, Linux and Mac OS• Erlang
![Page 23: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/23.jpg)
RabbitMQ - SDKs
C# .Net PHP
JavaRuby
ErlangPerl
Javascript
GoPython
Scala
Haskell
![Page 24: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/24.jpg)
The Advanced Message Queuing Protocol (AMQP) is an open standard application layer protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing (including point-to-point and publish-and-subscribe), reliability and security.
AMQP
![Page 25: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/25.jpg)
To become the standard protocol for interoperability between all messaging
middleware
AMQP
![Page 26: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/26.jpg)
PluginsManagement
• Gerenciamento• Configuração• Monitoramento
STOMP/ MQTT• Integrações utilizando outros protocolos de comunicação
Federation / Shovel• Configuração de cluster em redes não confiáveis
![Page 27: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/27.jpg)
Características do RabbitMQ• Queue• Consumer
• Public/Subscriber• Exchange• Channel• Persitent
• Durável / Transiente• Atomicidade• Round-Robin• Acknolodge
• Ack/Nack• TTL (Time to Live)
![Page 28: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/28.jpg)
Tipos de fila do RabbitMQ
• Basic• Work• Topic• Route• Fanout• RPC
![Page 29: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/29.jpg)
Basic - RabbitMQ
P – ProducerC – ConsumerQueue in Red
The simplest thing that does something
![Page 30: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/30.jpg)
Work - RabbitMQ
Distributing tasks among workers
Automatic - Round-Robin
![Page 31: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/31.jpg)
Publish/Subscribe (FanOut)- RabbitMQ
Sending messages to many consumers at once
Exchange Types: direct, topic, headers and fanoutchannel.exchange_declare(exchange='direct_logs', type=‘fanout')
![Page 32: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/32.jpg)
Routing - RabbitMQ
Receiving messages selectivelychannel.exchange_declare(exchange='direct_logs', type='direct')channel.basic_publish(exchange='direct_logs', routing_key=severity, body=message)
![Page 33: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/33.jpg)
Topics - RabbitMQ
Receiving messages based on a patternchannel.exchange_declare(exchange='direct_logs',
type=‘topic')
![Page 34: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/34.jpg)
RPC Async WorkFlow - RabbitMQ
Remote procedure call implementationDefine properties: CorrelationId and ReplyTo (QueueName to reply
message)
![Page 35: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/35.jpg)
Install Client - RabbitMQ{ "require": { "php-amqplib/php-amqplib": "2.5.*" }}
$composer install or update
Tutorial: https://www.rabbitmq.com/tutorials/
![Page 36: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/36.jpg)
API de Autorização { Stack }
Repositório de código: • https://github.com/alexandrebl• https://
github.com/alexandrebl/IMastersPHPExp2016
![Page 37: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/37.jpg)
• NoSQL• Cache de dados• Dicionário (Chave/Valor)• Dados em memória• Persistência como opção• Stand Alone• Cluster• Replicação• Redis-cli• Redis Manager
• NoSQL• Json Format Data• Dados em disco• Stand Alone• Shard• Replica• Mongo Shell• RoboMongo• MongoChef
• PHP Framework• MVC• Open-source• REST API• Event/handle• Console• Composer
![Page 38: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/38.jpg)
Fluxo da API de Autorização
![Page 39: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/39.jpg)
Sending message with PHP
require_once __DIR__ . '/vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;use PhpAmqpLib\Message\AMQPMessage;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest',
'guest');$channel = $connection->channel();
![Page 40: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/40.jpg)
Sending message with PHP
$channel->queue_declare('hello', false, false, false, false);
$msg = new AMQPMessage('Hello World!');$channel->basic_publish($msg, '', 'hello');
$channel->close();$connection->close();
![Page 41: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/41.jpg)
Receiving message with PHP$callback = function($msg) { echo " [x] Received ", $msg->body, "\n"; };
$channel->basic_consume('hello', '', false, true, false, false, $callback);
while(count($channel->callbacks)) { $channel->wait();}
![Page 42: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/42.jpg)
Sending message with C# .Netusing RabbitMQ.Client;
var factory = new ConnectionFactory() { HostName = "localhost"
};
using(var connection = factory.CreateConnection())using(var channel = connection.CreateModel()){ }
![Page 43: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/43.jpg)
Sending message with C# .Netchannel.QueueDeclare(
queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null);
![Page 44: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/44.jpg)
Sending message with C# .Netvar body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);
![Page 45: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/45.jpg)
RabbitMQ - Tutoriaishttps://www.rabbitmq.com/getstarted.html
![Page 46: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/46.jpg)
RabbitMQ – Curso on-linehttps://www.pluralsight.com/courses/rabbitmq-dotnet-developers
![Page 47: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/47.jpg)
RabbitMQ Manager• Free• Gestão de objetos
• Queue• Exchange• Channels• Routing
• Taxa de tranferência• Simulação• Recursos de hardware
![Page 48: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/48.jpg)
Instalação do RabbitMQ Manager
rabbitmq-plugins enable rabbitmq_management
http://server-name:15672/
![Page 49: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/49.jpg)
Azure Service Bus
![Page 50: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/50.jpg)
Azure Service Bus Documentation
![Page 51: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/51.jpg)
Azure Service Bus
•Queue•Notification Services
•Service Bus Pipeline
• IoT Hub Messaging•Dashboard Admin
![Page 52: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/52.jpg)
Microsoft Azure Service Bus Manager
![Page 53: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/53.jpg)
{Seja hoje uma pessoa
melhor do que você foi ontem
}
![Page 54: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/54.jpg)
Pesquise...
![Page 55: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/55.jpg)
Pesquise...Estude...
![Page 56: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/56.jpg)
Pesquise...Estude...
Domine...
![Page 57: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/57.jpg)
Pesquise...Estude...
Influencie...
Domine...
![Page 58: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/58.jpg)
Alexandre Brandão
Twitter: @abrandaolustosaE-mail: [email protected]: +55 (21) 97367-6161
https://github.com/alexandrebl
Obrigado :)
Linkedin: abrandaol
![Page 59: FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ](https://reader038.vdocuments.com.br/reader038/viewer/2022102802/586fdacb1a28ab18428b5ed7/html5/thumbnails/59.jpg)
Alexandre Brandão
Twitter: @abrandaolustosaE-mail: [email protected]: +55 (21) 97367-6161
https://github.com/alexandrebl
Perguntas?
Linkedin: abrandaol