Talk I gave at LRUG about RabbitMQ, how we're using it at GoCardless and the some tools we built - Hutch and AMQPC
Hutch is an opinionated library for RabbitMQ which makes using it for comms in SOA super simple
14. RabbitMQ
• Very Flexible, but...
• Which data structure do you use?
• How do you serialise your data?
• Which fields do you require in your messages?
• How should messages be routed? fan out?
direct? topically?
• How do new nodes set themselves up?
• What form should “Boiler Plate” code take?
15. A system for processing RabbitMQ messages in Ruby
16. • Our Conventions (Warning: Opinions!)
• Topic Exchange Routing
• Serialisation w/ JSON
• Message IDs and Timestamps
• Simple to use
• Configurable
• Specific ruby files or full Rails apps
30. RabbitMQ
Scaling
• Good guide to clustering online
• Potential for issues with multiple nodes
• Clients exist for load testing, but...
• We wanted ++ parallelism
• Built “AMQPC”
31. AMQPC
• Written in Go
• Producer & Consumer modes
• Traffic Modes
• One off burst
• Intermittent burst
• Consistent load