Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

AMQP client implementation in Ruby/EventMachine

branch: master

This branch is 0 commits ahead and 0 commits behind master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 doc
Octocat-spinner-32 examples
Octocat-spinner-32 lib
Octocat-spinner-32 old
Octocat-spinner-32 protocol
Octocat-spinner-32 research
Octocat-spinner-32 README
Octocat-spinner-32 Rakefile
Octocat-spinner-32 amqp.gemspec
Octocat-spinner-32 amqp.todo
README
Simple AMQP driver for Ruby/EventMachine
  (c) 2008 Aman Gupta (tmm1)
 
  http://github.com/tmm1/amqp
  http://rubyforge.org/projects/amqp
  http://hopper.squarespace.com/blog/2008/7/22/simple-amqp-library-for-ruby.html
  http://groups.google.com/group/ruby-amqp
  http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2008-July/001417.html

This library works with Ruby 1.8, Ruby 1.9 and JRuby.

This library was tested primarily with RabbitMQ, although it should be compatible with any
server implementing the AMQP 0-8 spec.

To use with RabbitMQ, first run the server:

  hg clone http://hg.rabbitmq.com/rabbitmq-codegen
  hg clone http://hg.rabbitmq.com/rabbitmq-server
  cd rabbitmq-server
  make run

To get started, refer to the various bundled examples:

  ruby examples/mq/pingpong.rb   # 1-1 communication using amq.direct
  ruby examples/mq/clock.rb      # 1-N communication using amq.fanout
  ruby examples/mq/stocks.rb     # 1-subscriber communication using amq.topic

  ruby examples/mq/multiclock.rb # header based routing (new rabbitmq feature)
  ruby examples/mq/ack.rb        # using ack
  ruby examples/mq/pop.rb        # pop off messages one at a time

  ruby examples/mq/hashtable.rb  # simple async rpc layer
  ruby examples/mq/primes.rb 4   # parallelized prime number generation
  ruby examples/mq/logger.rb     # simple logging api

For more details into the lower level AMQP client API, run the simple client example:

  ruby examples/amqp/simple.rb   # low-level AMQP api
  ruby examples/mq/internal.rb   # low-level Queue/Exchange api

Or refer to protocol/doc.txt, which enumerates packets sent between a server and client
during a typical session, in both binary and decoded formats.

To run the test suite:

  rake spec

The lib/amqp/spec.rb file is generated automatically based on the AMQP specification. To generate it:

  rake codegen

This project was inspired by py-amqplib, rabbitmq, qpid and rubbyt.
Special thanks to Dmitriy Samovskiy, Ben Hood and Tony Garnock-Jones.

AMQP resources:

  Servers:
    RabbitMQ (Rabbit Technologies, Erlang/OTP, MPL) - http://rabbitmq.com
    ZeroMQ   (iMatix/FastMQ/Intel, C++, GPL3)       - http://www.zeromq.org
    OpenAMQ  (iMatix, C, GPL2)                      - http://openamq.org
    ActiveMQ (Apache Foundation, Java, apache2)     - http://activemq.apache.org

  Steve Vinoski explains AMQP in his column, Towards Integration
    http://steve.vinoski.net/pdf/IEEE-Advanced_Message_Queuing_Protocol.pdf

  John O'Hara on the history of AMQP
    http://www.acmqueue.org/modules.php?name=Content&pa=showpage&pid=485

  Dmitriy's presentation on RabbitMQ/AMQP
    http://somic-org.homelinux.org/blog/2008/07/31/slides-for-my-amqprabbitmq-talk/

  ZeroMQ's analysis of the messaging technology market
    http://www.zeromq.org/whitepapers:market-analysis

  Pieter Hintjens's background to AMQP
    http://www.openamq.org/doc:amqp-background

  Barry Pederson's py-amqplib
    http://barryp.org/software/py-amqplib/

  Ben Hood on writing an AMQP client
    http://hopper.squarespace.com/blog/2008/6/21/build-your-own-amqp-client.html

  Dmitriy Samovskiy introduces Ruby + QPid + RabbitMQ
    http://somic-org.homelinux.org/blog/2008/06/24/ruby-amqp-rabbitmq-example/

  Ben Hood's as3-amqp
    http://github.com/0x6e6562/as3-amqp
    http://hopper.squarespace.com/blog/2008/7/4/server-side-as3.html
    http://hopper.squarespace.com/blog/2008/3/24/as3-amqp-client-first-cut.html

  RabbitMQ's protocol code generator
    http://hg.rabbitmq.com/rabbitmq-codegen/

  Erlang Exchange presentation on the implementation of RabbitMQ
    http://skillsmatter.com/podcast/erlang/presenting-rabbitmq-an-erlang-based-implementatio-nof-amqp
    http://www.lshift.net/blog/2008/07/01/slides-from-our-erlang-exchange-talk

  Jonathan Conway's series on RabbitMQ and using it with Ruby/Merb
    http://jaikoo.com/2008/3/20/daemonize-rabbitmq
    http://jaikoo.com/2008/3/14/oh-hai-rabbitmq
    http://jaikoo.com/2008/2/29/friday-round-up-2008-02-29
    http://jaikoo.com/2007/9/4/didn-t-you-get-the-memo

  Open Enterprise's series on messaging middleware and AMQP
    http://www1.interopsystems.com/analysis/can-amqp-break-ibms-mom-monopoly-part-1.html
    http://www1.interopsystems.com/analysis/can-amqp-break-ibms-mom-monopoly-part-2.html
    http://www1.interopsystems.com/analysis/can-amqp-break-ibms-mom-monopoly-part-3.html

Messaging and distributed systems resources:

  A Critique of the Remote Procedure Call Paradigm
    http://www.cs.vu.nl/~ast/publications/euteco-1988.pdf

  A Note on Distributed Computing
    http://research.sun.com/techrep/1994/smli_tr-94-29.pdf

  Convenience Over Correctness
    http://steve.vinoski.net/pdf/IEEE-Convenience_Over_Correctness.pdf

  Metaprotocol Taxonomy and Communications Patterns
    http://hessian.caucho.com/doc/metaprotocol-taxonomy.xtp

  Joe Armstrong on Erlang messaging vs RPC
    http://armstrongonsoftware.blogspot.com/2008/05/road-we-didnt-go-down.html

  SEDA: scalable internet services using message queues
    http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf
Something went wrong with that request. Please try again.