symfony vs. message brokers
TRANSCRIPT
It’s all about eXperience
Gaetano Giunta
Symfony Live
Sept 2016
Symfony
vs.
Message Brokers
(tip: Symfony wins)
• RabbitMQ
• ActiveMQ
• Apollo
• Kafka
• Kestrel
• Amazon SQS
• ZeroMQ*
• And many more…
Can you name any broker?
• RabbitMQ
• ActiveMQ
• Apollo
• Kafka
• Kestrel
• Amazon SQS
• ZeroMQ*
• And many more…
Why should you use one? Which one?
A case study: generating M$Office docs
• Produce content in Microsoft Office formats
• Many formats for each document
• Both Word and Excel docs
• XML content generated by CMS
• LibreOffice used to generate MS Office and PDF
versions
A case study: generating M$Office docs
Reality bites
• Slooow
• Rest assured that some of the docs will be pretty big
• Unreliable
• Depending on version, LO crashes from a-bit to almost-
always
• Race-prone
• Two conversion jobs in parallel might step on each other
A case study: generating M$Office docs
…and the results are:
• Ugly code: lots of polling, copying of files around,
manual locking
• Does not scale at all: only one conversion process
active at any given time
Web
serverPHP
Libre
Office
Waiting processes
Is there a bundle for that ?
oldsound/rabbitmq-bundle
• Specific to RabbitMQ
• Consumers are long-lived php processes
• fatal errors
• mem leaks
• DB connections time out
• on your code or in a dependency?
Multiple protocol support
Kaliop Queueing Bundles
fusesource/stomp-phpaws/aws-sdk-php oldsound/rabbitmq
ActiveMQ ApolloSQS RabbitMQ
Application
Easy to use
• Message encoding taken care of
• Has events your code can listen to
Message
received
Do stuff
Consump
tion
failed
Message
consumed
Exception
A design focusing on safety
• The default consumer has been split in 2
• The listener is long lived
• The worker process is a Symfony console command
• It handles a single message then exits
Symfony
listenerSymfony
worker
Libre
OfficeQueue