Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RabbitMQ and Hutch

RabbitMQ and Hutch

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

Peter Hamilton

August 13, 2013
Tweet

More Decks by Peter Hamilton

Other Decks in Technology

Transcript

  1. About Me • Developer at GoCardless • CompSci Student at

    ICL • Github: https://github.com/petehamilton • Blog: pete-hamilton.co.uk • Twitter: @peterejhamilton
  2. RabbitMQ Why? • Nice Learning Curve • Reliable • Active

    Community • Polyglot • Scalable • Proven itself in battle production
  3. RabbitMQ Why? • Payments are pretty serious stuff • Async

    = Potential problems • Network Failure? • Consumer Crashes? • Duplication/redelivery? • RabbitMQ helps with confirms, acknowledgements, mandatory flags
  4. Topic Exchange RabbitMQ Routing P X C1 C2 type=topic tv.scifi.*

    tv.comedy.* C3 tv.# Q1 Q2 Q3 Sample Message Routing Keys: - tv.comedy.big_bang_theory - tv.scifi.firefly - tv.scifi.star_trek
  5. 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?
  6. • 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
  7. RabbitMQ Scaling • Good guide to clustering online • Potential

    for issues with multiple nodes S S M x C1
  8. RabbitMQ Scaling • Good guide to clustering online • Potential

    for issues with multiple nodes S S M x C1
  9. RabbitMQ Scaling • Good guide to clustering online • Potential

    for issues with multiple nodes S S M C1 x
  10. RabbitMQ Scaling • Good guide to clustering online • Potential

    for issues with multiple nodes M S M C1 x
  11. RabbitMQ Scaling • Good guide to clustering online • Potential

    for issues with multiple nodes • Clients exist for load testing, but... • We wanted ++ parallelism • Built “AMQPC”
  12. AMQPC • Written in Go • Producer & Consumer modes

    • Traffic Modes • One off burst • Intermittent burst • Consistent load