Decouple all the things: Asynchronous messaging keeps it simple
summary
Demonstrates that AMQP messaging with RabbitMQ and the bunny gem in Ruby moves master‑data updates from fragile REST push to durable publish‑subscribe and task queues, preserving messages while consumers are down, letting new consumers bind without changing producers, and enabling parallel image processing and large migrations. Shows a live demo with two workers (sleeping 2s and 5s) illustrating round‑robin vs prefetch balancing, explains idempotent handlers, small JSON payloads with routing keys, and successful shadow‑traffic testing of a new frontend.
AI-written summary · about
chapters (23)
- 0:00Start
- 2:07Master data updates need to propagate
- 6:36Interoperability
- 7:30Message Flow
- 9:08Messages contain payload and routing key
- 11:47No information lost if consumer down
- 12:13Add consumers without touching producer
- 13:18Different messages for different client needs
- 14:35Example Message
- 15:57Why not include updated data?
- 16:33No guaranteed order - aim for commutativity
- 18:15No exactly once delivery - aim for idem-potent messages
- 19:08Add producers without touching the consumer
- 19:33Centralized tracking of decentralized events
- 20:36Avoid n-m routing, keep breaking changes manageable
- 22:22Notifications/Events-producer state changed
- 22:40Task/Command-consumer state to change
- 22:58Run tasks asynchronously
- 24:02Improve response time, avoid downtimes, gain reliability
- 25:19Scaling on the fly
- 27:52Migration without downtime
- 29:39Test without impacting users
- 38:01Flexible Routing via different Exchange Types
related talks
18mRuby Messaging Patterns
27mRuby Messaging Patterns
36mDRb vs. RabbitMQ Showdown
01h 05mScaling Applications with RabbitMQ
02h 59mPractical RabbitMq workshop
27mScaling a Rails Monolith w/Event Driven Microservices
32mRabbitMQ in Real Life - Tips and Tricks
33mFar and Away (A Tour of DistribRuted Programming with Ruby)
