Esta charla pretende enseñar como añadir RabbitMQ a un proyecto Symfony.
Charla realizada en Symfony Barcelona el dia 2 de julio. Podeis encontrar ejemplos de código en https://github.com/solilokiam/rabbitmqexample
Peter Coppens, VP Product, presentation from Layer 123 SDN NFV World Congress in the Hague, October 2017. SD WAN benefits and caveats from real use cases.
Veeam Backup & Replication Tips and TricksVeeam Software
VMworld 2012
Featured speakers:
- Anton Gostev, Veeam Software, @Gostev
- Doug Hazelman, Veeam Software, @VMDoug
Learn more about Veeam Backup & Replication - http://www.veeam.com/vmware-esx-backup.html
Veeam® Backup & Replication™ provides powerful, easy to use, and affordable data protection for virtualized applications and data on VMware vSphere. It unifies backup and replication in a single solution, and its patented vPower® technology leverages virtualization to reinvent data protection. There are no agents to manage, no need to babysit backup jobs, and you can verify the recoverability of every backup, every time. Veeam Backup & Replication supports vSphere 5.1.
Peter Coppens, VP Product, presentation from Layer 123 SDN NFV World Congress in the Hague, October 2017. SD WAN benefits and caveats from real use cases.
Veeam Backup & Replication Tips and TricksVeeam Software
VMworld 2012
Featured speakers:
- Anton Gostev, Veeam Software, @Gostev
- Doug Hazelman, Veeam Software, @VMDoug
Learn more about Veeam Backup & Replication - http://www.veeam.com/vmware-esx-backup.html
Veeam® Backup & Replication™ provides powerful, easy to use, and affordable data protection for virtualized applications and data on VMware vSphere. It unifies backup and replication in a single solution, and its patented vPower® technology leverages virtualization to reinvent data protection. There are no agents to manage, no need to babysit backup jobs, and you can verify the recoverability of every backup, every time. Veeam Backup & Replication supports vSphere 5.1.
Comparison of Zabbix with market competitorsRodrigo Mohr
In order to identify the ideal monitoring tool to be used in Dell's corporate environment, an analysis of various monitoring tools in the market, including Zabbix, was performed. This presentation aims to highlight the main strengths and weaknesses identified in Zabbix compared to its competitors, based on the needs of our company.
Nutanix se despacha en días, y su despliegue se realiza en menos de un día (realmente!)
Permite no interrumpir las operaciones en curso (reducción del 99,7% en los tiempos de inactividad no planificados)
Escala fácilmente - Añada capacidad cuando la necesite- No más sobre aprovisionamiento (el tiempo de despliegue es 85% más rápido)
Reduce el costo y la complejidad de su sistema de computación y almacenamiento - hasta un 90% de ahorro de energía y espacio
Todos sus sistemas gestionados a través de una interfaz de panel único (71% menos tiempo de gestión de un entorno Nutanix)
Proporciona capacidades avanzadas de almacenamiento de clase empresarial (Deduplicación, Compresión, etc.)
Soporte de Clase Mundial – 88 Net Promotor Score (El siguiente proveedor de tecnología más alta de la lista fue Intel- en un 53!)
As enterprise adoption of cloud computing accelerates, driven by compelling advantages of higher efficiency and lower costs, rapid deployment and elastic scalability, organizations must have a strategy and plan for moving to the cloud. How can organizations get started on the evolution to cloud computing? This presentation explores how enterprise IT can move toward a cloud computing model, building on a foundation of virtualization, engineered systems and management automation.
Azure Arc offers simplified management, faster app development, and consistent Azure services. Easily organize, govern, and secure Windows, Linux, SQL Server, and Kubernetes clusters across data centers, the edge, and multicloud environments right from Azure. Architect, design, and build cloud-native apps anywhere without sacrificing central visibility and control. Get Azure innovation and cloud benefits by deploying consistent Azure data, application, and machine learning services on any infrastructure.
Gain central visibility, operations, and compliance
Centrally manage a wide range of resources including Windows and Linux servers, SQL server, Kubernetes clusters, and Azure services.
Establish central visibility in the Azure portal and enable multi-environment search with Azure Resource Graph.
Meet governance and compliance standards for apps, infrastructure, and data with Azure Policy.
Delegate access and manage security policies for resources using role-based access control (RBAC) and Azure Lighthouse.
Organize and inventory assets through a variety of Azure scopes, such as management groups, subscriptions, resource groups, and tags.
Learn more about hybrid and multicloud management in the Microsoft Cloud Adoption Framework for Azure.
The world’s information is doubling every two years. In 2011 the world created a staggering 1.8 zettabytes. By 2020 the world will generate 50 times the amount of information and 75 times the number of "information containers", while IT staff to manage it will grow less than 1.5 times. This session introduces students to various storage networking, & business continuity terminologies.
Introducing the Oracle Cloud Infrastructure (OCI) Best Practices FrameworkRevelation Technologies
As AWS became a viable cloud service provider with wide adoption, Amazon introduced back in 2015 the "AWS Well-Architected Framework" which provides architectural best practices across five pillars. Similarly, Oracle Cloud Infrastructure (OCI) introduced their own "OCI Best Practices Framework." This framework covers best practices for four "business goals" that include: security and compliance, reliability and resiliency, performance and cost optimization, and operational efficiency. Learning about and adopting these recommended best practices help you design and operate cloud topologies that deliver maximum business value.
These best practices are the result of years of experience with thousands of cloud customers creating architectures that are meant to be secure, highly performant, resilient, and efficient. While not overly complex this framework can be intimidating for those newly embarking on their cloud journey; this presentation introduces the framework, walks through the business goals, and highlights some of the elements and strategies to give you a stronger idea of how this framework can benefit you.
This presentation covers the challenges with Enterprise WAN, discuss how SD-WAN promise to address the problem and lastly Nuage Network SD-WAN solution, Virtualized Network Services (VNS)..
This presentation was given by Seema Kumar, Websphere Product Management and Surya V Duggirala, Websphere Performance Architect at IBM Impact 2012 at Mumbai on the 1st of June. It talks about Innovative Applications and Interactive Experiences
Application Modernization using the Strangler PatternTom Laszewski
Modernization of applications on mainframe and UNIX servers can be challenging because the applications and databases are highly integrated and interdependent. Utilizing the strangler pattern, organizations can break free of legacy debt on mainframe and UNIX systems. This presentations discusses the strangler pattern, and how enterprise customers utilized the pattern to move to AWS serverless services and cloud native architectures.
Centralización de logs con Elasticsearch + Logstash + Kibana
y Recolección de métricas con statsd/collectd, con multiples storages y visualizadores de métricas
Repositorio con infraestructuras automatizadas + un symfony que se integra
https://github.com/felixcarmona/detras-del-backend
(vagrant up)
Comparison of Zabbix with market competitorsRodrigo Mohr
In order to identify the ideal monitoring tool to be used in Dell's corporate environment, an analysis of various monitoring tools in the market, including Zabbix, was performed. This presentation aims to highlight the main strengths and weaknesses identified in Zabbix compared to its competitors, based on the needs of our company.
Nutanix se despacha en días, y su despliegue se realiza en menos de un día (realmente!)
Permite no interrumpir las operaciones en curso (reducción del 99,7% en los tiempos de inactividad no planificados)
Escala fácilmente - Añada capacidad cuando la necesite- No más sobre aprovisionamiento (el tiempo de despliegue es 85% más rápido)
Reduce el costo y la complejidad de su sistema de computación y almacenamiento - hasta un 90% de ahorro de energía y espacio
Todos sus sistemas gestionados a través de una interfaz de panel único (71% menos tiempo de gestión de un entorno Nutanix)
Proporciona capacidades avanzadas de almacenamiento de clase empresarial (Deduplicación, Compresión, etc.)
Soporte de Clase Mundial – 88 Net Promotor Score (El siguiente proveedor de tecnología más alta de la lista fue Intel- en un 53!)
As enterprise adoption of cloud computing accelerates, driven by compelling advantages of higher efficiency and lower costs, rapid deployment and elastic scalability, organizations must have a strategy and plan for moving to the cloud. How can organizations get started on the evolution to cloud computing? This presentation explores how enterprise IT can move toward a cloud computing model, building on a foundation of virtualization, engineered systems and management automation.
Azure Arc offers simplified management, faster app development, and consistent Azure services. Easily organize, govern, and secure Windows, Linux, SQL Server, and Kubernetes clusters across data centers, the edge, and multicloud environments right from Azure. Architect, design, and build cloud-native apps anywhere without sacrificing central visibility and control. Get Azure innovation and cloud benefits by deploying consistent Azure data, application, and machine learning services on any infrastructure.
Gain central visibility, operations, and compliance
Centrally manage a wide range of resources including Windows and Linux servers, SQL server, Kubernetes clusters, and Azure services.
Establish central visibility in the Azure portal and enable multi-environment search with Azure Resource Graph.
Meet governance and compliance standards for apps, infrastructure, and data with Azure Policy.
Delegate access and manage security policies for resources using role-based access control (RBAC) and Azure Lighthouse.
Organize and inventory assets through a variety of Azure scopes, such as management groups, subscriptions, resource groups, and tags.
Learn more about hybrid and multicloud management in the Microsoft Cloud Adoption Framework for Azure.
The world’s information is doubling every two years. In 2011 the world created a staggering 1.8 zettabytes. By 2020 the world will generate 50 times the amount of information and 75 times the number of "information containers", while IT staff to manage it will grow less than 1.5 times. This session introduces students to various storage networking, & business continuity terminologies.
Introducing the Oracle Cloud Infrastructure (OCI) Best Practices FrameworkRevelation Technologies
As AWS became a viable cloud service provider with wide adoption, Amazon introduced back in 2015 the "AWS Well-Architected Framework" which provides architectural best practices across five pillars. Similarly, Oracle Cloud Infrastructure (OCI) introduced their own "OCI Best Practices Framework." This framework covers best practices for four "business goals" that include: security and compliance, reliability and resiliency, performance and cost optimization, and operational efficiency. Learning about and adopting these recommended best practices help you design and operate cloud topologies that deliver maximum business value.
These best practices are the result of years of experience with thousands of cloud customers creating architectures that are meant to be secure, highly performant, resilient, and efficient. While not overly complex this framework can be intimidating for those newly embarking on their cloud journey; this presentation introduces the framework, walks through the business goals, and highlights some of the elements and strategies to give you a stronger idea of how this framework can benefit you.
This presentation covers the challenges with Enterprise WAN, discuss how SD-WAN promise to address the problem and lastly Nuage Network SD-WAN solution, Virtualized Network Services (VNS)..
This presentation was given by Seema Kumar, Websphere Product Management and Surya V Duggirala, Websphere Performance Architect at IBM Impact 2012 at Mumbai on the 1st of June. It talks about Innovative Applications and Interactive Experiences
Application Modernization using the Strangler PatternTom Laszewski
Modernization of applications on mainframe and UNIX servers can be challenging because the applications and databases are highly integrated and interdependent. Utilizing the strangler pattern, organizations can break free of legacy debt on mainframe and UNIX systems. This presentations discusses the strangler pattern, and how enterprise customers utilized the pattern to move to AWS serverless services and cloud native architectures.
Centralización de logs con Elasticsearch + Logstash + Kibana
y Recolección de métricas con statsd/collectd, con multiples storages y visualizadores de métricas
Repositorio con infraestructuras automatizadas + un symfony que se integra
https://github.com/felixcarmona/detras-del-backend
(vagrant up)
What RabbitMQ can do for you (phpnw14 Uncon)James Titcumb
RabbitMQ is a message broker – an application that allows communication between applications by way of a message queuing system. In this talk, we look at some of the basic concepts of RabbitMQ and how it can help effectively scale your applications.
Charla del PHP Day Spain, sobre como lidiar con Legacy Code. Se habla de UnitTesting, Refactoring. Ademas de como generar codigo de buena calidad con TDD y Clean Code.
Joomla!day2013 Albacete Spain, Responsive, Adaptive y la tundraJordi Catà
En esta charla realizada en el Joomla!Day 2013 Albacete, Hablo sobre Responsive, Adaptive , apps a nivel conceptual con el objetivo de diferenciar las diferentes técnicas para adaptar la web a los diferentes dispositivos.
El incremento de acceso a webs vía dispositivos móviles está en aumento. El ratio de conversión de compras vía app desde tableta es más alto que vía ordenador. Las webs tienden a ser multidispositivo: la misma web se puede visualizar en ordenador, móvil, tablet, Smart TV.
La irrupción de la web 2.0 ha cedido todo el protagonismo del desarrollo web a las de tecnologías de cliente: javascript, css, peticiones http en segundo plano... y no ha hecho más que intensificar su uso. En esta ponencia veremos herramientas para detectar cuellos de botella en el navegador y algunos trucos para optimizar el uso de estos recursos y mejorar drásticamente la carga de nuestras páginas.
Steganography: Hiding your secrets with PHPRaul Fraile
Steganography consists of hiding a secret message within another message. Unlike cryptography, steganography tries to achieve security through obscurity, hiding the very presence of the message. Ideally, the steganographic message will look identically to a normal message.
This talk examines different techniques to hide messages using steganography from the perspective of a PHP developer. From more classical techniques such as hiding an image within another image using the least significant bits of each pixel, to more advanced ones like using TCP/IP packets.
OpenSky es uno de los primeros grandes usuarios de Symfony desde su lanzamiento. Hoy en día cuenta con varios millones de usuarios activos. Compartiremos como OpenSky utiliza Symfony, Doctrine con MySQL y MongoDB y otros componentes.
También ofreceremos algunos tips de la infraestructura y la organización que posibilitan un crecimiento gradual, continuo y ágil.
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosJavier Eguiluz
Instalación y primeros pasos fue la primera ponencia impartida durante las Jornadas Symfony 2011. Se trata de la primera parte de las seis que forman el tutorial de desarrollo de la aplicación github.com/desymfony.
Durante la misma se explIca cómo instalar y configurar Symfony2, cómo instalar el proyecto deSymfony, cómo crear los bundles con el generador interactivo y también se introduce el funcionamiento de la arquitectura MVC en Symfony2 mediante la programación de la parte dedicada a mostrar las páginas estáticas de la aplicación.
Charla sobre Desarrollo guiado por comportamiento, BDD, utilizando las tecnologías Behat y Mink en Php.
Una exposición a grandes rasgos sobre qué es BDD, Behat y Mink, con ejemplos y anotaciones técnicas más relevantes.
Caso de uso: www.takeachef.com, testing sobre un wizard/asistente con interfaz gráfica rica, con javascript, transiciones css y llamadas Ajax lo que obliga a definirse una librería propia de Step Defintions y trabajar los Hooks de Behat, spins, Datafixtures e integración con Framework Symfony.
La charla tuvo lugar el 7 de junio del 2017 en el CEEI de Castellón de la mano de Betabeers.
Próximamente curso completo en: http://www.geekshubsacademy.com/
Diapositivas correspondientes a la parte sobre la plataforma de desarrollo Google App Engine del curso de extensión universitaria "Cloud Computing. Desarrollo de Aplicaciones y Minería Web", celebrado en la Escuela Universitaria de Ingeniería Informática de Oviedo
Introduction to Akamon software arquitecture for MPWAREloi Poch
Technical talk about the architecture used Akamon based on DDD, CQRS, TDD and BDD given as a teacher in a class in the master "High Performance Web Development" at Ramon Llull University.
There is also a GitHub repository to practice this technical solution: https://github.com/eloipoch/mpwar
En esta charla se explicará cómo realizar implementar integración continua usando Gitlab y fastlane para que de forma automatizada haga:
- Ejecución de tests unitarios
- Ejecución de tests de interfaz con KIF
- Análisis de código en Sonar
- Despliegue de la app a TestFlight
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)Oskar Laguillo
Virus, el arte de algunos. Conferencia presentada en /Rooted CON 2011 por Alberto García de Dios el 3 de Marzo de 2011 en Madrid.
Ver la conferencia en YouTube: http://youtu.be/ZUgHdX_6iGM
Esta presentación brinda una descripción general sobre las operaciones básicas de SNMP y cómo resolver problemas relacionados. La misma, es la segunda de una serie de tres partes - Desmitificando SNMP.
9. Mensajes
• Body
• Body es lo que nosotros
decidamos (json/serialize/
binario/txt…)
• Header:
• Info para el broker
• Info para la aplicación
10. Mensajes
• Body
• Body es lo que nosotros
decidamos (json/serialize/
binario/txt…)
• Header:
• Info para el broker
• Info para la aplicación
Header
Content type
Content Encoding
Routing key
Delivery Mode
Message Priority
Message publishing timestamp
Expiration period
App Id
Body
{
"id": 0,
"guid":
"2cbe2352-6d0e-430b-8faf-122eea44ebf3",
"isActive": false,
"balance": "$3,243.34",
"picture": "http://placehold.it/
32x32",
"age": 25,
"eyeColor": "blue",
"name": "Lawanda Serrano",
"gender": "female",
"company": "ELEMANTRA",
"email":
"lawandaserrano@elemantra.com",
"phone": "+1 (827) 534-2331”
}
11. Colas
• Mensajes esperan a ser consumidos
• FIFO
• Persistente
• Exclusiva
• Autoborrado
• Round Robin
12. Exchanges
• Donde se envían mensajes
• Enrutar
• Tipos:
• Direct
• Fanout
• Topic
• Autoborrado
13. Direct Exchange
• Una cola C se subscribe a un
exchange con la clave X
• Nuevo mensaje con la clave Y
• Si X = Y enrutar a cola C
15. Topic Exchange
• Un mensaje es enrulado a
una o varias colas
dependiendo de un match
con un patrón.
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_MRG/1.1/html/Messaging_User_Guide/chap-Messaging_User_Guide-
Exchanges.html
16. Persistencia
• ¿Que pasa cuando palma?
• Podemos guardar en disco la estructura
• Podemos guardar en disco los mensajes
• Si guardamos los mensajes debemos guardar la
estructura
30. RabbitMQ y Symfony
• RabbitMQBundle (https://github.com/videlalvaro/rabbitmqbundle)
31. RabbitMQ y Symfony
• RabbitMQBundle (https://github.com/videlalvaro/rabbitmqbundle)
• Basado en PhpAmqpLib
32. RabbitMQ y Symfony
• RabbitMQBundle (https://github.com/videlalvaro/rabbitmqbundle)
• Basado en PhpAmqpLib
• Creación de Consumidores/Productores sencilla.
33. RabbitMQ y Symfony
• RabbitMQBundle (https://github.com/videlalvaro/rabbitmqbundle)
• Basado en PhpAmqpLib
• Creación de Consumidores/Productores sencilla.
• Configuración de rabbit sencilla.
34. RabbitMQ y Symfony
• RabbitMQBundle (https://github.com/videlalvaro/rabbitmqbundle)
• Basado en PhpAmqpLib
• Creación de Consumidores/Productores sencilla.
• Configuración de rabbit sencilla.
• No excesivamente estable. Nuevas funcionalidades constantes
35. RabbitMQ y Symfony
• RabbitMQBundle (https://github.com/videlalvaro/rabbitmqbundle)
• Basado en PhpAmqpLib
• Creación de Consumidores/Productores sencilla.
• Configuración de rabbit sencilla.
• No excesivamente estable. Nuevas funcionalidades constantes
• PhpAmqpLib (https://github.com/videlalvaro/php-amqplib)
36. RabbitMQ y Symfony
• RabbitMQBundle (https://github.com/videlalvaro/rabbitmqbundle)
• Basado en PhpAmqpLib
• Creación de Consumidores/Productores sencilla.
• Configuración de rabbit sencilla.
• No excesivamente estable. Nuevas funcionalidades constantes
• PhpAmqpLib (https://github.com/videlalvaro/php-amqplib)
• La libreria de referencia.
37. RabbitMQ y Symfony
• RabbitMQBundle (https://github.com/videlalvaro/rabbitmqbundle)
• Basado en PhpAmqpLib
• Creación de Consumidores/Productores sencilla.
• Configuración de rabbit sencilla.
• No excesivamente estable. Nuevas funcionalidades constantes
• PhpAmqpLib (https://github.com/videlalvaro/php-amqplib)
• La libreria de referencia.
• No te da muchas facilidades
38. RabbitMQ y Symfony
composer require oldsound/rabbitmq-bundle:1.3.*
Instalación
<?php
public function registerBundles()
{
$bundles = array(
new OldSoundRabbitMqBundleOldSoundRabbitMqBundle(),
);
return $bundles;
}
51. Velocidad
• Los productores producen a más velocidad de la que
los consumidores son capaces de consumir.
• Las colas se llenan
• Optimiza el consumidor• Arranca más consumidores
Problema
Solución
52. Diferencias de Velocidad
Problema
• Sobre la misma cola un consumidor procesa más
mensajes que el otro.
• Un consumidor acaba ocioso y el otro tiene mensajes
pendientes
55. Diferencias de Velocidad
Causa
• Algoritmo de round robin de las colas.
Mensaje1
Mensaje2
Mensaje3
Mensaje4
Mensaje5
Mensaje6
Productor
http://www.cloudamqp.com/
56. Diferencias de Velocidad
Causa
• Algoritmo de round robin de las colas.
Mensaje1
Mensaje2
Mensaje3
Mensaje4
Mensaje5
Mensaje6
Productor
http://www.cloudamqp.com/
57. Diferencias de Velocidad
Causa
• Algoritmo de round robin de las colas.
Mensaje1
Mensaje2
Mensaje3
Mensaje4
Mensaje5
Mensaje6
Productor
http://www.cloudamqp.com/
58. Diferencias de Velocidad
Causa
• Algoritmo de round robin de las colas.
Mensaje1
Mensaje2
Mensaje3
Mensaje4
Mensaje5
Mensaje6
Productor
http://www.cloudamqp.com/
59. Diferencias de Velocidad
Causa
• Algoritmo de round robin de las colas.
Mensaje1
Mensaje2
Mensaje3
Mensaje4
Mensaje5
Mensaje6
Productor
Mensaje1
Mensaje3
Mensaje5
Consumidor 1
Mensaje2
Mensaje4
Mensaje6
Consumidor 2
http://www.cloudamqp.com/
64. Pierdo la conexión
• Hacer que el consumer muera al cabo de un tiempo de
inactividad.
consumers:
make_thumbnail:
connection: default
exchange_options:
name: 'make-thumbnail-exchange'
type: direct
durable: true
auto_delete: false
queue_options: {name: 'make-thumbnail-queue',durable: true}
callback: solilokiam.rabbitmq.make_thumbnail_consumer
idle_timeout: 60
65. Pierdo la conexión
Solución
• Hacer que el consumer muera al cabo de un tiempo de
inactividad.
consumers:
make_thumbnail:
connection: default
exchange_options:
name: 'make-thumbnail-exchange'
type: direct
durable: true
auto_delete: false
queue_options: {name: 'make-thumbnail-queue',durable: true}
callback: solilokiam.rabbitmq.make_thumbnail_consumer
idle_timeout: 60
66. Problemas de comunicación
Problema
• El formato de mensajes producidos no es entendido
por los consumidores.
• El formato de los mensajes cambia.
70. public function execute(AMQPMessage $msg)
{
try
{
$makeThumbnailMsg = $this->translator($msg);
$imagine = new Imagine();
$imagine->open($makeThumbnailMsg->getOriginalImagePath())
->resize(new Box($makeThumbnailMsg->getWidth(),$makeThumbnailMsg->getHeight()))
->save($makeThumbnailMsg->getDestinationImagePath());
} catch(Exception $e) {
return false;
}
!
return true;
}
Problemas de comunicación
71. Problemas de comunicación
class MakeThumbnailTranslator implements TranslatorInterface
{
public function translateMessage($message)
{
$data = json_decode($message->body,true);
!
if(json_last_error() !== JSON_ERROR_NONE)
{
throw new Exception('WrongMessage');
}
!
$makeThumbnailMessage = new MakeThumbnailMessage();
$makeThumbnailMessage->setOriginalImagePath($data['original_image_path']);
$makeThumbnailMessage->setDestinationImagePath($data['destination_image_path']);
$makeThumbnailMessage->setWidth($data['width']);
$makeThumbnailMessage->setHeight($data['height']);
!
return $makeThumbnailMessage;
}
!
}
72. La importancia del orden
Problema
• Los mensajes han de ser consumidos en el mismo
orden que se han publicado.
• Quiero tener mas de un consumer para dar velocidad.
73. La importancia del orden
Solución
• Sección 4.7 protocolo AMQP: […]Specifically,
contents flowing through a single path within the
server will remain ordered For contents of a given
priority flowing through a single path, we define a
content processing path as consisting of one incoming
channel, one exchange, one queue, and one outgoing
channel.
76. Organización
Solución
• Organizar los exchanges por afinidad.
• Una cola por exchange (direct o fanout)
• Todos los mensajes al mismo consumer
• Filtramos por type
public function execute(AMQPMessage $message)
{
if (!array_key_exists($message->get('type'), $this->workers)) {
return false;
}
!
return $this->workers[$message->get('type')]->doWork($message->body);
}
77. Organización
Solución
• Organizar los exchanges por afinidad.
• Utilizar el routing de RabbitMQ
• Un consumer por tipo de mensaje
• Una cola por tipo de mensaje
80. ¿Donde esta la respuesta?
Problema
• Necesito una respuesta a los mensajes que lanzo.
• Quiero poder paralizar las llamadas.
• Lo quiero hacer con RabbitMQ.
87. Vamos a viajar
Problema
• Nuestra aplicación esta repartida por varias Regiones
• Queremos buena latencia.
• Queremos que los mensajes se propaguen.