README.md in amqp-1.3.0 vs README.md in amqp-1.4.0

- old
+ new

@@ -1,24 +1,30 @@ # Ruby amqp gem: the asynchronous Ruby RabbitMQ client -[Ruby amqp gem](http://rubyamqp.info) is a widely used, feature-rich, well-maintained asynchronous RabbitMQ client with batteries included. -This library works with +[Ruby amqp gem](http://rubyamqp.info) is a feature-rich, +EventMachine-based RabbitMQ client with batteries included. - * Ruby 2.1 - * Ruby 2.0 - * Ruby 1.9.3 - * [JRuby](http://jruby.org) - * [Rubinius](http://rubini.us) - * Ruby 1.9.2 - * Ruby 1.8.7 - * [REE](http://www.rubyenterpriseedition.com), +It implement [AMQP +0.9.1](http://www.rabbitmq.com/tutorials/amqp-concepts.html) and +support [RabbitMQ extensions to AMQP +0.9.1](http://www.rabbitmq.com/extensions.html). -and is licensed under the [Ruby License](http://www.ruby-lang.org/en/LICENSE.txt) -0.8.0 and later versions of amqp gem implement [AMQP 0.9.1](http://www.rabbitmq.com/tutorials/amqp-concepts.html) (see also [AMQP 0.9.1 spec document](http://bit.ly/amqp091spec)) and support [RabbitMQ extensions to AMQP 0.9.1](http://www.rabbitmq.com/extensions.html). +## A Word of Warning: Use This Only If You Already Use EventMachine +Unless you **already use EventMachine**, there is no real reason to +use this client. Consider [Bunny](http://rubybunny.info) or [March Hare](http://rubymarchhare.info) instead. +amqp gem brings in a fair share of EventMachine complexity which +cannot be fully eliminated. Event loop blocking, writes that happen +at the end of loop tick, uncaught exceptions in event loop silently killing it: +it's not worth the pain unless you've already deeply invested in EventMachine +and understand how it works. + +So, just use Bunny or March Hare. You will be much happier. + + ## I know what RabbitMQ is, how do I get started? See [Getting started with amqp gem](http://rubyamqp.info/articles/getting_started/) and other [amqp gem documentation guides](http://rubyamqp.info/). We recommend that you read [AMQP 0.9.1 Model Explained](http://www.rabbitmq.com/tutorials/amqp-concepts.html), too. @@ -124,11 +130,25 @@ [Getting started guide](http://rubyamqp.info/articles/getting_started/) explains this and two more examples in detail, and is written in a form of a tutorial. See [AMQP 0.9.1 Model Explained](http://www.rabbitmq.com/tutorials/amqp-concepts.html) if you want to learn more about RabbitMQ protocol principles & concepts. +## Supported Ruby Versions +This library works with + + * Ruby 2.1 + * Ruby 2.0 + * Ruby 1.9.3 + * [JRuby](http://jruby.org) + * [Rubinius](http://rubini.us) + * Ruby 1.9.2 + * Ruby 1.8.7 + * [REE](http://www.rubyenterpriseedition.com), + + + ## Documentation: tutorials, guides & API reference We believe that in order to be a library our users **really** love, we need to care about documentation as much as (or more) code readability, API beauty and autotomated testing across 5 Ruby implementations on multiple operating systems. We do care about our [documentation](http://rubyamqp.info): **if you don't find your answer in documentation, we consider it a high severity bug** that you @@ -209,11 +229,11 @@ * [Continous integration status](http://travis-ci.org/#!/ruby-amqp/amqp) ## License ## -AMQP gem is licensed under the [Ruby License](http://www.ruby-lang.org/en/LICENSE.txt). +amqp gem is licensed under the [Ruby License](http://www.ruby-lang.org/en/LICENSE.txt). ## Credits and copyright information ## @@ -244,37 +264,9 @@ * [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) * Joe Armstrong on [Erlang messaging vs RPC](http://armstrongonsoftware.blogspot.com/2008/05/road-we-didnt-go-down.html) - -## (Very) Short FAQ ## - -### So, does amqp gem only work with RabbitMQ? - -This library is developed and tested primarily with [RabbitMQ](http://rabbitmq.com), although it should be compatible with any -server implementing the [AMQP 0.9.1 spec](http://bit.ly/hw2ELX). For AMQP 0.8 brokers, use amqp gem version 0.7.x. - -### Why isn't Ruby 1.8.7-p249 supported? Will it be supported in the future? - -In order to make code like the following (pseudo-synchronous) work - -``` ruby -conn = AMQP.connect -ch = AMQP::Channel.new(conn) - -ex = ch.default_exchange -ex.publish(some_data) -``` - -and not be affected by this [Ruby 1.8.7-p249-specific bug (super called outside of method)](http://bit.ly/iONBmH), we need to -avoid any inheritance for key amqp gem classes: Channel, Queue, Exchange, Consumer. This will take a significant refactoring effort and -we do not expect this to change at this time. - - -### How does amqp gem relate to amq-client gem, amq-protocol and libraries like Bunny? - -See [this page about AMQP gems family](https://github.com/ruby-amqp/amq-client/blob/master/README.textile) [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/ruby-amqp/amqp/trend.png)](https://bitdeli.com/free "Bitdeli Badge")