SlideShare a Scribd company logo
1 of 73
Message Queueing in Ruby
          An Overview
       Pradeep Elankumaran
            @pradeep24
       pradeep@intridea.com
About Us
❖   Intridea is a high-end web consulting shop

❖   Based out of Washington DC, but dispersed all over the United States

❖   Our most popular product is Presently, an enterprise microblogging
    platform

❖   Grub.it is our latest product - mobile dish reviewing

❖   Various iPhone & Android apps (Car Finder, Grub.it)

❖   Specialize in web & mobile development using Ruby, Rails, Java, Erlang
    and beyond
Some background...
A request is supposed to
return a response really fast.
However, there are certain
actions that may take longer
  than a few milliseconds
A Few Examples
❖   Delivering e-mail

❖   Image processing (resizing, cropping etc.)

❖   Sending out notifications

❖   Geocoding a location

❖   Talking to other web services
These actions, if not
  extracted out to run
asynchronously, will slow
     down your app
Bad user experience
What is a
Message Queue?
A server that you submit
 asynchronous ‘jobs’ to
        Things to be done later
Interfaces between your Rails
  app and the ‘workers’ that
      perform each ‘job’
‘Workers’ pull jobs from each
  queue and process them
           ASAP
Queues need to be
FAST & RELIABLE
Queue 1: Delayed Job
     github.com/tobi/delayed_job
Extracted out from
   Shopify.com
Delayed Job is backed by
     your database.
Serializes Ruby Job classes
  (YAML) into a ‘jobs’ table
Easy-to-use syntax
rake jobs:run
Polls the database
to get new jobs :(
A Few Notes about DJ
❖   used by Github exhaustively till they moved to Resque

❖   will get you 80% of the way there, has some nice advanced
    features (priority, retries etc.)

❖   should be careful not to overload your jobs table

    ❖   backed up jobs can lead to query slowdown on your site

❖   suggested that you monitor and profile workers before you
    launch on production
Queue 2: Starling
    github.com/starling/starling
Extracted out (infamously)
  from early versions of
         Twitter
Gets a bad rep for systems
with high load, but pretty
  great for smaller apps
Speaks Memcached Protocol
Distributed from the
     client-side
Easy-to-use Syntax
Will have to write your own
         workers :(
Will have to poll the queue
     to get new jobs :(
A Few Notes about Starling

❖   persists to RAILS_ROOT/tmp/starling

❖   great for smaller apps, very lightweight

❖   again, will get you 80% of the way there

❖   writing robust, reliable workers is left up to you

❖   polling makes it slow compared to other queues
Queue 3: ActiveMQ
     activemq.apache.org
Mature Apache project.
Been around for a while, used
 by many, many websites &
        companies
Written in Java - however,
can connect w/ Ruby using
  the STOMP protocol
Scripts provided to stop/start
    queue server daemon
        bin/activemq stop|start|restart
Use ActiveMessaging for easy
 integration or the STOMP
 gem for manual integration
ActiveMessaging plugin


❖   developed by ThoughtWorks

❖   provides a mini-framework to publish and subscribe to
    various ActiveMQ queues and topics

❖   mature, well-tested
Publish from any Ruby object
Define your own Processors




      script/poller run
Comes with a basic
monitoring interface
Evented!
A Few Notes about ActiveMQ

❖   enterprise-grade

❖   can be clustered (edit XML files)

❖   using ActiveMessaging, no need to write your own workers

❖   STOMP gem is great if you do want to write your own
    workers
Queue 4: RabbitMQ
      rabbitmq.com
AMQP
Advanced Message Queuing Protocol
AMQP can do lots of stuff...
❖   Point-to-point communication

❖   One-to-many broadcasting (including multicast)

❖   Transactional publication and acknowledgement

❖   High-speed transient message flows

❖   Reliable persistent message delivery

❖   File streaming
Fast, Reliable Erlang Queue
Careful with the libraries....


❖   @tmm1’s amqp gem - runs off EventMachine, doesn’t play
    well with Passenger (asynchronous)

❖   warren - the best of the bunch for Rails (synchronous)

❖   bunny - lightweight (synchronous)
Evented!
A Few Notes about
                RabbitMQ

❖   enterprise-grade

❖   can be clustered using Erlang’s built-in awesome clustering

❖   will have to write your own workers unless you use Workling

❖   very, very fast
Queue 5: Resque
   github.com/defunkt/resque
Resque sits on top of Redis
Redis
    superfast data structures store
     like memcached, but smarter
     in-memory for the most part
   persisted to disk asynchronously
sets, lists & corresponding operations
created by @defunkt
     of github.com
persists jobs to Redis as
     JSON objects
Easy to define new Jobs

any Ruby class that responds
    to ‘perform’ method
Queuing jobs




QUEUE=image_queue rake resque:work
QUEUE=* rake resque:work
Also comes with a Sinatra
app that lets you monitor
       your queues
A Few Notes about Resque

❖   has a dependency on Redis

❖   don’t have to write your own workers

    ❖   very nice worker fork()

❖   not evented :(
Pick the right queue for
        the job
Do your own load-tests
 on your own stack
The Care & Feeding of
  Worker Daemons
More often than not, the
queues are not the problem.
Writing workers
in Ruby is easy...
... but writing Ruby workers
  that are long-running and
     reliable is NOT easy
   unless you’re using EventMachine or
      really know what you’re doing
Why so hard to write Ruby workers?


❖   You will wake up to workers with memory leaks

❖   Workers sometimes lock up

❖   Loading the whole Rails stack for each worker

❖   In general, a pain to manage these worker daemons
Use EventMachine
     Reactor Pattern
 Define callbacks on events
    pretty solid & fast
fork( )
spin up the worker in the new process
           close when done
     can kill bothersome workers
           easier debugging
Workling plugin
  github.com/purzelrakete/workling
Questions?
    @pradeep24
pradeep@intridea.com
Something new...
Llama

❖   A port of Apache Camel to Ruby

❖   based off EventMachine, so it runs ROCK SOLID

❖   early alpha at this point, looking for helpers

❖   github.com/skyfallsin/llama
Llama Code Example
github.com/skyfallsin/llama

More Related Content

What's hot

SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure FunctionsSharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
Sébastien Levert
 

What's hot (20)

Scala on Rails #rakutentech
Scala on Rails #rakutentechScala on Rails #rakutentech
Scala on Rails #rakutentech
 
Design & Prototype an API
Design & Prototype an APIDesign & Prototype an API
Design & Prototype an API
 
JWC 2015 - Mobile apps development for Joomla!
JWC 2015 - Mobile apps development for Joomla!JWC 2015 - Mobile apps development for Joomla!
JWC 2015 - Mobile apps development for Joomla!
 
Alexandre Roman - How Pivotal Cloud Foundry can help you run Spring at scale ...
Alexandre Roman - How Pivotal Cloud Foundry can help you run Spring at scale ...Alexandre Roman - How Pivotal Cloud Foundry can help you run Spring at scale ...
Alexandre Roman - How Pivotal Cloud Foundry can help you run Spring at scale ...
 
The Power of RxJS in Nativescript + Angular
The Power of RxJS in Nativescript + AngularThe Power of RxJS in Nativescript + Angular
The Power of RxJS in Nativescript + Angular
 
Creating real time applications with Angular and Firebase
Creating real time applications with Angular and FirebaseCreating real time applications with Angular and Firebase
Creating real time applications with Angular and Firebase
 
20 quick wins to improve your website speed
20 quick wins to improve your website speed20 quick wins to improve your website speed
20 quick wins to improve your website speed
 
React Native
React NativeReact Native
React Native
 
BuildStatus - PiterJS #1
BuildStatus - PiterJS #1BuildStatus - PiterJS #1
BuildStatus - PiterJS #1
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
Common design principles and design patterns in automation testing
Common design principles and design patterns in automation testingCommon design principles and design patterns in automation testing
Common design principles and design patterns in automation testing
 
Novidades Angular 4.x e CLI
Novidades Angular 4.x e CLI Novidades Angular 4.x e CLI
Novidades Angular 4.x e CLI
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
 
Serverless Empowering people
Serverless Empowering peopleServerless Empowering people
Serverless Empowering people
 
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
 
Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to Go
 
Selenium Conference Austin 2017 - Automate Windows and Mac Apps With The WebD...
Selenium Conference Austin 2017 - Automate Windows and Mac Apps With The WebD...Selenium Conference Austin 2017 - Automate Windows and Mac Apps With The WebD...
Selenium Conference Austin 2017 - Automate Windows and Mac Apps With The WebD...
 
Finding the sweet spot - blending the best of native and web
Finding the sweet spot - blending the best of native and webFinding the sweet spot - blending the best of native and web
Finding the sweet spot - blending the best of native and web
 
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure FunctionsSharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
 
Lighthouse custom audits - London Web Performance 2019
Lighthouse custom audits -  London Web Performance 2019Lighthouse custom audits -  London Web Performance 2019
Lighthouse custom audits - London Web Performance 2019
 

Viewers also liked

WTF Is Messaging And Why You Should Use It?
WTF Is Messaging And Why You Should Use It?WTF Is Messaging And Why You Should Use It?
WTF Is Messaging And Why You Should Use It?
James Russell
 
BASE: An Acid Alternative
BASE: An Acid AlternativeBASE: An Acid Alternative
BASE: An Acid Alternative
Hiroshi Ono
 
10mentalbarrierstoletgoof 12861929353381 Phpapp01
10mentalbarrierstoletgoof 12861929353381 Phpapp0110mentalbarrierstoletgoof 12861929353381 Phpapp01
10mentalbarrierstoletgoof 12861929353381 Phpapp01
ana_ls
 
Coimbra rb | microservic'ing and sinatra
Coimbra rb | microservic'ing and sinatraCoimbra rb | microservic'ing and sinatra
Coimbra rb | microservic'ing and sinatra
linkedcare
 
Europycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQEuropycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQ
fcrippa
 

Viewers also liked (15)

WTF Is Messaging And Why You Should Use It?
WTF Is Messaging And Why You Should Use It?WTF Is Messaging And Why You Should Use It?
WTF Is Messaging And Why You Should Use It?
 
REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For Microservices
 
BASE: An Acid Alternative
BASE: An Acid AlternativeBASE: An Acid Alternative
BASE: An Acid Alternative
 
Simple Web Services With Sinatra and Heroku
Simple Web Services With Sinatra and HerokuSimple Web Services With Sinatra and Heroku
Simple Web Services With Sinatra and Heroku
 
10mentalbarrierstoletgoof 12861929353381 Phpapp01
10mentalbarrierstoletgoof 12861929353381 Phpapp0110mentalbarrierstoletgoof 12861929353381 Phpapp01
10mentalbarrierstoletgoof 12861929353381 Phpapp01
 
Ruby and Sinatra's Shotgun Wedding
Ruby and Sinatra's Shotgun WeddingRuby and Sinatra's Shotgun Wedding
Ruby and Sinatra's Shotgun Wedding
 
Swing when you're winning - an introduction to Ruby and Sinatra
Swing when you're winning - an introduction to Ruby and SinatraSwing when you're winning - an introduction to Ruby and Sinatra
Swing when you're winning - an introduction to Ruby and Sinatra
 
Coimbra rb | microservic'ing and sinatra
Coimbra rb | microservic'ing and sinatraCoimbra rb | microservic'ing and sinatra
Coimbra rb | microservic'ing and sinatra
 
Lightweight Webservices with Sinatra and RestClient
Lightweight Webservices with Sinatra and RestClientLightweight Webservices with Sinatra and RestClient
Lightweight Webservices with Sinatra and RestClient
 
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
 
Europycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQEuropycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQ
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
 
RestMQ - HTTP/Redis based Message Queue
RestMQ - HTTP/Redis based Message QueueRestMQ - HTTP/Redis based Message Queue
RestMQ - HTTP/Redis based Message Queue
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQ
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)
 

Similar to Message Queues in Ruby - An Overview

Deferred Processing in Ruby - Philly rb - August 2011
Deferred Processing in Ruby - Philly rb - August 2011Deferred Processing in Ruby - Philly rb - August 2011
Deferred Processing in Ruby - Philly rb - August 2011
rob_dimarco
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Kyle Drake
 

Similar to Message Queues in Ruby - An Overview (20)

DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails Final
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
 
Deferred Processing in Ruby - Philly rb - August 2011
Deferred Processing in Ruby - Philly rb - August 2011Deferred Processing in Ruby - Philly rb - August 2011
Deferred Processing in Ruby - Philly rb - August 2011
 
Ruby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby MeRuby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby Me
 
Concurrency in ruby
Concurrency in rubyConcurrency in ruby
Concurrency in ruby
 
Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
 
Continuous deployment of Rails apps on AWS OpsWorks
Continuous deployment of Rails apps on AWS OpsWorksContinuous deployment of Rails apps on AWS OpsWorks
Continuous deployment of Rails apps on AWS OpsWorks
 
TorqueBox - Ruby Hoedown 2011
TorqueBox - Ruby Hoedown 2011TorqueBox - Ruby Hoedown 2011
TorqueBox - Ruby Hoedown 2011
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
DevOps For Small Teams
DevOps For Small TeamsDevOps For Small Teams
DevOps For Small Teams
 
Midwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small teamMidwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small team
 
From java-to-ruby-book-summary
From java-to-ruby-book-summaryFrom java-to-ruby-book-summary
From java-to-ruby-book-summary
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
ZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small Teams
 
The JavaScript Delusion
The JavaScript DelusionThe JavaScript Delusion
The JavaScript Delusion
 
Ransack, an Application Built on Ansible's API for Rackspace -- AnsibleFest N...
Ransack, an Application Built on Ansible's API for Rackspace -- AnsibleFest N...Ransack, an Application Built on Ansible's API for Rackspace -- AnsibleFest N...
Ransack, an Application Built on Ansible's API for Rackspace -- AnsibleFest N...
 
Large-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesLarge-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 Minutes
 
Madison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small TeamsMadison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small Teams
 
Hack Rio/OS
Hack Rio/OSHack Rio/OS
Hack Rio/OS
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

Message Queues in Ruby - An Overview

Editor's Notes

  1. by Blaine Cook
  2. used it on early version of Presently, works just fine, very stable
  3. based on memcache-client, which will do server-based hashing
  4. can submit/get any kind of string. will have
  5. by Blaine Cook
  6. used it on early version of Presently, works just fine, very stable
  7. want to get rid of these