Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Swarrot, a library to consume them all!
Search
Olivier Dolbeau
October 20, 2015
Programming
0
410
Swarrot, a library to consume them all!
Talk given at BlaBlaCar Tech Meetup in Warsaw
Olivier Dolbeau
October 20, 2015
Tweet
Share
More Decks by Olivier Dolbeau
See All by Olivier Dolbeau
Throw new \Exception(); Oui, mais laquelle ?
odolbeau
0
140
Jane & Webby
odolbeau
0
350
Translating a monolingual application
odolbeau
2
480
DX: Developer eXperience
odolbeau
0
65
DX: Developer eXperience
odolbeau
0
510
EasyAdminBundle introduction
odolbeau
0
160
REX API Platform
odolbeau
0
1.2k
Features flags at BlaBlaCar
odolbeau
4
990
25+ million members in 22 countries, how to scale with Symfony2
odolbeau
1
450
Other Decks in Programming
See All in Programming
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
430
ErdMap: Thinking about a map for Rails applications
makicamel
1
1.4k
SpringBoot3.4の構造化ログ #kanjava
irof
2
920
WebDriver BiDiとは何なのか
yotahada3
1
130
Amazon Bedrock Multi Agentsを試してきた
tm2
1
270
2024年のWebフロントエンドのふりかえりと2025年
sakito
1
220
技術を根付かせる / How to make technology take root
kubode
1
230
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
2
290
Swiftコンパイラ超入門+async関数の仕組み
shiz
0
210
Open source software: how to live long and go far
gaelvaroquaux
0
580
DevinとCursorから学ぶAIエージェントメモリーの設計とMoatの考え方
itarutomy
1
590
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
5
1.4k
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
67
11k
Done Done
chrislema
182
16k
YesSQL, Process and Tooling at Scale
rocio
171
14k
How to train your dragon (web standard)
notwaldorf
90
5.8k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The Pragmatic Product Professional
lauravandoore
32
6.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
GitHub's CSS Performance
jonrohan
1030
460k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Thoughts on Productivity
jonyablonski
69
4.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Transcript
None
@odolbeau Web Architect Olivier Dolbeau
None
What happens when you publish a trip?
We send an email to the driver. We index the
trip in ElasticSearch. We send the comment to moderation spooler. We store all relevant informations in Hadoop for BI.
I’m gonna sleep, tell me when you’re done!
None
None
“RabbitMQ is a message broker. The principal idea is pretty
simple: it accepts and forwards messages.”
Publisher Queue1 Exchange Queue2 Queue3 Consumer Consumer Consumer Consumer RabbitMQ
What happens when you publish a trip?
We send an email to the driver. We index the
trip in ElasticSearch. We sent the comment in moderation. We store all relevant informations in Hadoop for BI.
RabbitMQ Application mail publication indexation bi Consumer mail Consumer bi
Consumer indexation Consumer moderation moderation
So cool!
That’s fast! At least for the user.
We have several small applications.
We can scale!
Problems...
Long running processes.
Expect errors. Deal with them. • Catch them! • Retry
when needed. • Don’t stop your consumer.
Your worker need to be stopped correctly.
None
Goals
Solve mentioned problems.
Be able to change the broker used.
Implementation
We need a MessageProvider. We use the pecl extension.
Here is our “business” logic.
Let’s consume them all!
Encapsulation FTW! <3
Let’s create a stack.
The result.
None
Used in production.
None
Sometimes, dealing with consumers can be a pain...
Use a message broker, that’s awesome!
Sometimes, dealing with consumers can be a pain, BUT you
should definitively use a Message Broker! <3 Olivier Dolbeau @odolbeau