<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Ruby RabbitMQ clients blog]]></title>
  <link href="http://blog.rubyrabbitmq.info/atom.xml" rel="self"/>
  <link href="http://blog.rubyrabbitmq.info/"/>
  <updated>2018-01-13T02:05:07+03:00</updated>
  <id>http://blog.rubyrabbitmq.info/</id>
  <author>
    <name><![CDATA[Michael Klishin]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Bunny 2.9.1 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2018/01/13/bunny-2-dot-9-1-is-released/"/>
    <updated>2018-01-13T01:45:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2018/01/13/bunny-2-dot-9-1-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.9.1">Bunny 2.9.1</a> is released to rubygems.org.</p>

<p><code>2.9.1</code> is a minor feature release that drops support for Ruby 2.2 and earlier.</p>

<h2>Changes between Bunny 2.9.0 and 2.9.1 (Jan 11th, 2018)</h2>

<h3>Default CA Certificate Paths are Respected Again</h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/539">#539</a>.</p>

<p>Contributed by Carl Hörberg.</p>

<h2>Changes between Bunny 2.8.0 and 2.9.0 (Jan 8th, 2018)</h2>

<h3>Ruby 2.2 Requirement</h3>

<p>Bunny now requires Ruby 2.2.</p>

<h3>Support for Additional URI Query Parameters</h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/534">#534</a>.</p>

<p>Contributed by Andrew Babichev.</p>

<h2>Changes between Bunny 2.7.0 and 2.8.0 (Dec 18th, 2018)</h2>

<p>This release has <strong>minor breaking public API changes</strong>.</p>

<h3><code>Bunny::Channel#close</code> on a Closed Channel Now Raises a Sensible Exception</h3>

<p><code>Bunny::Channel#close</code> on an already closed channel will now raise a sensible exception.
If the channel was closed due to a channel-level protocol exception, that exception will
be mentioned.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/528">#528</a>, see <a href="https://github.com/ruby-amqp/bunny/commit/9df7cb04d9ff12b1af62a11e239fd81e5472c872">9df7cb</a> for
details.</p>

<h3>JRuby 9K Compatibility</h3>

<p>A JRuby 9K compatibility issue was corrected by Marian Posăceanu.
Note that JRuby users are recommended to use <a href="http://rubymarchhare.info/">March Hare</a>, a JRuby-oriented client, instead
of Bunny.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/529">#529</a></p>

<h3>Connection Exceptions are Logged as Warning with Automatic Recovery</h3>

<p>When automatic recovery is enabled, connection errors are now logged as warnings
and not errors.</p>

<p>Contributed by Merten Falk.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/531">#531</a></p>

<h3>Server Heartbeat Value as a String</h3>

<p>It is now possible to specify a server-defined heartbeat value as a string (<code>"server"</code>), not just
a symbol. This makes it easier to load settings from YAML files.</p>

<p>Contributed by Tyrone Wilson.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/524">#524</a></p>

<h2>Changes between Bunny 2.7.0 and 2.7.1 (Sep 25th, 2017)</h2>

<h3>Sensible Socket Read Timeouts When RabbitMQ is Configured to Disabled Heartbeats</h3>

<p>Bunny now correctly handles scenarios where server is configured
to disable heartbeats (which is a terrible idea, don&#8217;t do it!)</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/519">#519</a>.</p>

<h3>Bunny::Channel#basic_get Usability</h3>

<p><code>Bunny::Channel#basic_get</code> invoked with a non-existent queue now
throws a channel exception instead of a generic operation timeout.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/518">#518</a>.</p>

<h3>Spec Suite Improvements</h3>

<p><code>BUNNY_CERTIFICATE_DIR</code> environment variable now can be used
to override local CA and client certificate/key pair directory.
The directory is expected to be the result directory generated
by the basic <a href="http://github.com/michaelklishin/tls-gen">tls-gen</a> profile.</p>

<p>TLSv1.0 is no longer used in tests because it&#8217;s being disabled by default
by more and more installations as it has known vulnerabilities
and is no longer considered to be acceptable by several compliance
standards (e.g. PCI DSS).</p>

<h3>Improved Synchronisation for channel.close Handlers</h3>

<p><code>channel.close</code> handler will now acquire a lock . This avoids concurrency
hazards in some rare scenarios when a channel is closed due a protocol
exception by the server and concurrently opened by user code
at the same time.</p>

<h3>More Meaningful Error Messages in Bunny::Session#create_channel</h3>

<p>Sometimes users attempt to open a channel on a connection that
isn&#8217;t connected yet because <code>Bunny::Session#start</code> was never invoked.</p>

<p><code>Bunny::Session#create_channel</code> will now provide a more sensible exception message
in those cases.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.9.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.7.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2017/05/11/bunny-2-dot-7-0-is-released/"/>
    <updated>2017-05-11T15:17:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2017/05/11/bunny-2-dot-7-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.7.0">Bunny 2.7.0</a> is released to rubygems.org.</p>

<p><code>2.7.0</code> is a maintenance release that introduces a couple of minor
breaking changes.</p>

<p>In case your applications use Date/Time/DateTime serialisation with Bunny,
all of them must upgraded to <code>2.7.0</code> at the same time.</p>

<h2>Changes between Bunny 2.6.x and 2.7.0 (May 11th, 2017)</h2>

<h3>amq-protocol Update</h3>

<p>Minimum <code>amq-protocol</code> version is now [<code>2.2.0</code>]](https://github.com/ruby-amqp/amq-protocol/blob/master/ChangeLog.md#changes-between-210-and-220-may-11th-2017) which includes
a change in <a href="https://github.com/ruby-amqp/amq-protocol/issues/64">how timestamps are encoded</a>.</p>

<h3><code>Bunny::ContinuationQueue#poll</code> Less Prone to Race Conditions</h3>

<p><code>Bunny::ContinuationQueue#poll</code> was reworked with feedback from Joseph Wong.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/462">#462</a></p>

<h3>Recovery Attempt Counting Strategy Changed</h3>

<p>Previous behehavior is not unreasonable but is not what many users and
even RabbitMQ team members come to expect. Therefore it can be
considered a bug.</p>

<p>Previously a reconnection counter was preserved between successful
recoveries. This made the integration test that uses server-sent
connection.close possible.</p>

<p>With this change, the counter is reset after successful reconnection
but there&#8217;s an option to go back to the original behavior. We also do
a hell of a lot more logging.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/408">#408</a></p>

<h3>Absolute Windows File Paths are No Longer treated as Inline Certs</h3>

<p>Contributed by Jared Smartt.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/492">#492</a>.</p>

<h3>Opening a Channel on an Intentionally Closed Connection Immediately Raises an Exception</h3>

<p>Contributed by Alessandro Verlato.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/465">#465</a></p>

<h3>Bunny::ConsumerWorkPool#shutdown Terminates Early When It&#8217;s Safe to Do So</h3>

<p><code>Bunny::ConsumerWorkPool#shutdown(true)</code> waited for consumer shutdown
even if the pool wasn&#8217;t active (there were no consumers on its
channel).</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/438">#438</a>.</p>

<h3>Retry on new Ruby 2.1+ variations of <code>EAGAIN</code>, <code>EWOULDBLOCK</code></h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/456">#456</a></p>

<h3>Do Not Modify Host Arrays</h3>

<p>Bunny now can work with frozen host arrays.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/446">#446</a></p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.7.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.6.6 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2017/05/11/bunny-2-dot-6-6-is-released/"/>
    <updated>2017-05-11T15:17:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2017/05/11/bunny-2-dot-6-6-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.6.6">Bunny 2.6.6</a> is released to rubygems.org.</p>

<p><code>2.6.6</code> is a maintenance release.</p>

<h2>Changes between Bunny 2.6.5 and 2.6.6 (May 11th, 2017)</h2>

<h3>Connection Recovery Improvements</h3>

<p>System call exceptions now will trigger connection recovery.</p>

<p>Contributed by Alessandro Verlato.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/491">#491</a>.</p>

<h2>Changes between Bunny 2.6.4 and 2.6.5 (April 15th, 2017)</h2>

<h3>Absolute Windows File Paths are No Longer treated as Inline Certs</h3>

<p>Contributed by Jared Smartt.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/492">#492</a>.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.6.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.6.4 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2017/03/07/bunny-2-dot-6-4-is-released/"/>
    <updated>2017-03-07T13:30:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2017/03/07/bunny-2-dot-6-4-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.6.4">Bunny 2.6.4</a> is released to rubygems.org.</p>

<p><code>2.6.4</code> is a maintenance release.</p>

<h2>Changes between Bunny 2.6.3 and 2.6.4</h2>

<h3><code>Bunny::ContinuationQueue#poll</code> Less Prone to Race Conditions</h3>

<p><code>Bunny::ContinuationQueue#poll</code> was reworked with feedback from Joseph Wong.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/462">#462</a></p>

<h3>Recovery Attempt Counting Strategy Changed</h3>

<p>Previous behehavior is not unreasonable but is not what many users and
even RabbitMQ team members come to expect. Therefore it can be
considered a bug.</p>

<p>Previously a reconnection counter was preserved between successful
recoveries. This made the integration test that uses server-sent
connection.close possible.</p>

<p>With this change, the counter is reset after successful reconnection
but there&#8217;s an option to go back to the original behavior. We also do
a hell of a lot more logging.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/408">#408</a></p>

<h3>Opening a Channel on an Intentionally Closed Connection Immediately Raises an Exception</h3>

<p>Contributed by Alessandro Verlato.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/465">#465</a></p>

<h2>Changes between Bunny 2.6.2 and 2.6.3</h2>

<h3>Retry on new Ruby 2.1+ variations of <code>EAGAIN</code>, <code>EWOULDBLOCK</code></h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/456">#456</a></p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.6.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[March Hare 3.0.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2017/02/20/march-hare-3-dot-0-0-is-released/"/>
    <updated>2017-02-20T15:12:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2017/02/20/march-hare-3-dot-0-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/march_hare/versions/3.0.0-java">March Hare 3.0.0</a> is
released to rubygems.org.</p>

<p>With this release March Hare switched to RabbitMQ Java client 4.x under
the hood.</p>

<h2>Changes Between 2.22.0 and 3.0.0 (February 20th, 2017)</h2>

<h3>RabbitMQ Java Client Upgrade</h3>

<p>RabbitMQ Java client dependency has been updated to the final version of <code>4.1.0</code>.</p>

<h2>Changes Between 2.21.0 and 2.22.0 (January 14th, 2017)</h2>

<h3>Convert Long Protocol Strings to <code>java.lang.String</code></h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/march_hare/issues/109">#109</a></p>

<p>Contributed by Andrew Cholakian.</p>

<h2>Changes Between 2.20.0 and 2.21.0 (November 24th, 2016)</h2>

<h3>RabbitMQ Java Client Upgrade</h3>

<p>RabbitMQ Java client dependency has been updated to the final version of <code>3.6.6</code>.</p>

<h2>Full Change Log</h2>

<p>Please consult the <a href="https://github.com/ruby-amqp/march_hare/blob/master/ChangeLog.md">change log</a>
to learn about the changes.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> on behalf of the <a href="http://github.com/ruby-amqp">Ruby RabbitMQ Clients</a> Team</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.6.2 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2017/01/22/bunny-2-dot-6-2-is-released/"/>
    <updated>2017-01-22T10:12:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2017/01/22/bunny-2-dot-6-2-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.6.2">Bunny 2.6.2</a> is released to rubygems.org.</p>

<p><code>2.6.2</code> is a maintenance release.</p>

<h2>Changes between Bunny 2.6.2 and 2.6.3</h2>

<h3>Retry on new Ruby 2.1+ variations of <code>EAGAIN</code>, <code>EWOULDBLOCK</code></h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/456">#456</a></p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.6.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[March Hare 2.20.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/11/07/march-hare-2-dot-20-dot-0-is-released/"/>
    <updated>2016-11-07T16:27:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/11/07/march-hare-2-dot-20-dot-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/march_hare/versions/2.20.0-java">March Hare 2.20.0</a> is
released to rubygems.org.</p>

<p>This is a maintenance release.</p>

<h2>Changes Between 2.19.0 and 2.20.0 (November 2nd, 2016)</h2>

<h3>Connection Recovery Should Retry on Protocol Handshake Timeout</h3>

<p>When an intermediary such as HAproxy with no backends online
(or a problematic server node) doesn&#8217;t respond to a protocol header sent
to it, RabbitMQ Java client will throw a generic operation timeout exception
because the heartbeat mechanism is not yet enabled (it has not yet negotiated
a timeout value for it!)</p>

<p>March Hare should handle this exception and retry, as if it was an I/O or skipped heartbeats
exception.</p>

<p>Kudos to Andrew Cholakian and Jordan Sissel for digging this issue out.</p>

<p>GitHub issues: <a href="https://github.com/ruby-amqp/march_hare/issues/107">#107</a>,
               <a href="https://github.com/logstash-plugins/logstash-input-rabbitmq/issues/76#issuecomment-257722124">logstash-plugins/logstash-input-rabbitmq#76</a></p>

<h2>Changes Between 2.18.0 and 2.19.0 (October 26th, 2016)</h2>

<h3>RabbitMQ Java Client Upgrade</h3>

<p>RabbitMQ Java client dependency has been updated to a milestone version of <code>3.6.6</code>
to include a number of bug fixes early.</p>

<h3>Thread Pool Leak</h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/march_hare/issues/97">#97</a>.</p>

<p>Contributed by Michael Reis.</p>

<h3>Removed Unused Thread Pool</h3>

<p>March Hare relies on RabbitMQ Java client for consumer dispatch
but one (unused) thread pool was still instantiated.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/march_hare/issues/96">#96</a>.</p>

<p>Contributed by Ivo Anjo.</p>

<h3>Channel Allocation Failure Throws an Exception</h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/march_hare/issues/98">#98</a>.</p>

<p>Contributed by Michael Reis.</p>

<h2>Full Change Log</h2>

<p>Please consult the <a href="https://github.com/ruby-amqp/march_hare/blob/master/ChangeLog.md">change log</a>
to learn about the changes.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> on behalf of the <a href="http://github.com/ruby-amqp">Ruby RabbitMQ Clients</a> Team</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.6.1 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/10/24/bunny-2-dot-6-1-is-released/"/>
    <updated>2016-10-24T02:24:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/10/24/bunny-2-dot-6-1-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.6.1">Bunny 2.6.1</a> is released to rubygems.org.</p>

<p><code>2.6.1</code> is a maintenance release.</p>

<h2>Changes between Bunny 2.6.0 and 2.6.1</h2>

<h3>Bunny::ConsumerWorkPool#shutdown Terminates Early When It&#8217;s Safe to Do So</h3>

<p><code>Bunny::ConsumerWorkPool#shutdown(true)</code> waited for consumer shutdown
even if the pool wasn&#8217;t active (there were no consumers on its
channel).</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/438">#438</a>.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.6.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.6.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/10/17/bunny-2-dot-6-0-is-released/"/>
    <updated>2016-10-17T00:54:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/10/17/bunny-2-dot-6-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.6.0">Bunny 2.6.0</a> is released to rubygems.org.</p>

<p><code>2.6.0</code> is a maintenance release.</p>

<h2>Changes between Bunny 2.5.0 and 2.6.0</h2>

<h3>Graceful Shutdown of Consumers</h3>

<p>Consumer work pool will now allow for a grace period before stopping
pool threads so that delivery processing in progress can have a chance to finish.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/437">#437</a></p>

<p>Contributed by Stefan Sedich.</p>

<h3><code>Bunny::Channel#wait_for_confirms</code> Now Throws When Used on a Closed Channel</h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/428">#428</a></p>

<p>Contributed by Dimitar Dimitrov.</p>

<h3>Race Condition Eliminated in <code>Bunny::Channel#wait_for_confirms</code></h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/424">#424</a></p>

<p>Contributed by Dimitar Dimitrov.</p>

<h3>More Defensive Consumer Work Pool</h3>

<p><code>Bunny::ConsumerWorkPool#join</code> and <code>Bunny::ConsumerWorkPool#pause</code>
no longer fails with a <code>NoMethodError</code> on nil when executed
on a work pool that doesn&#8217;t have active threads (consumers).</p>

<p>This change is largely cosmetic and won&#8217;t affect the majority
of of projects in any way.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.6.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.5.1 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/08/15/bunny-2-dot-5-1-is-released/"/>
    <updated>2016-08-15T08:43:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/08/15/bunny-2-dot-5-1-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.5.1">Bunny 2.5.1</a> is released to rubygems.org.</p>

<p><code>2.5.1</code> is a maintenance release.</p>

<h2>Changes between Bunny 2.5.0 and 2.5.1</h2>

<h3>More Defensive Consumer Work Pool</h3>

<p><code>Bunny::ConsumerWorkPool#join</code> and <code>Bunny::ConsumerWorkPool#pause</code>
no longer fails with a <code>NoMethodError</code> on nil when executed
on a work pool that doesn&#8217;t have active threads (consumers).</p>

<p>This change is largely cosmetic and won&#8217;t affect the majority
of of projects in any way.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.5.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[March Hare 2.18.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/08/15/march-hare-2-dot-18-dot-0-is-released/"/>
    <updated>2016-08-15T08:20:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/08/15/march-hare-2-dot-18-dot-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/march_hare/versions/2.18.0-java">March Hare 2.18.0</a> is
released to rubygems.org.</p>

<p>This is a maintenance release.</p>

<h2>Changes Between 2.17.0 and 2.18.0</h2>

<h3>RabbitMQ Java Client Upgrade</h3>

<p>RabbitMQ Java client dependency has been updated to <code>3.6.5</code>.</p>

<h2>Changes Between 2.16.0 and 2.17.0</h2>

<h3>User-provided Consumer Tags</h3>

<p>It is now possible to provide a custom consumer tag instead of
relying on RabbitMQ to generate one.</p>

<p>GH issue: <a href="https://github.com/ruby-amqp/march_hare/issues/92">#92</a></p>

<p>Contributed by Eger Andreas.</p>

<h3>RabbitMQ Java Client Upgrade</h3>

<p>RabbitMQ Java client dependency has been updated to <code>3.6.2</code>.</p>

<h2>Full Change Log</h2>

<p>Please consult the <a href="https://github.com/ruby-amqp/march_hare/blob/master/ChangeLog.md">change log</a>
to learn about the changes.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> on behalf of the <a href="http://github.com/ruby-amqp">Ruby RabbitMQ Clients</a> Team</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.5.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/07/20/bunny-2-dot-5-0-is-released/"/>
    <updated>2016-07-20T15:10:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/07/20/bunny-2-dot-5-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.5.0">Bunny 2.5.0</a> is released to rubygems.org.</p>

<p><code>2.5.0</code> is a maintenance release.</p>

<h2>Changes between Bunny 2.4.0 and 2.5.0</h2>

<h3>Exchange Bindings are Now Correctly Recovered</h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/410">#410</a></p>

<p>Contributed by Andrew Bruce.</p>

<h3><code>Bunny::Channel#wait_for_confirms</code> Awaits While There&#8217;re Outstanding Unconfirmed Messages</h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/424">#424</a></p>

<p>Contributed by Dimitar Dimitrov.</p>

<h3>Queue Recovery Respects the <code>:no_declare</code> Option</h3>

<p>Queue recovery now respects the <code>:no_declare</code> option.</p>

<h3><code>Bunny::Channel#wait_for_confirms</code> Throws Early</h3>

<p><code>Bunny::Channel#wait_for_confirms</code> now throws an exception
early when invoked on a closed channel.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/428">#428</a>.</p>

<p>Contributed by Dimitar Dimitrov.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.5.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.4.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/06/12/bunny-2-dot-4-0-is-released/"/>
    <updated>2016-06-12T18:59:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/06/12/bunny-2-dot-4-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.4.0">Bunny 2.4.0</a> is released to rubygems.org.</p>

<p><code>2.4.0</code> is a minor feature release.</p>

<h2>Changes between Bunny 2.3.0 and 2.4.0</h2>

<h3>Unconfirmed Delivery Tag Set Reset on Network Recovery</h3>

<p>Channels will now reset their unconfirmed delivery tag set after
recovery.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/406">#406</a></p>

<p>Contributed by Bill Ruddock.</p>

<h3>Support (Quoted) IPv6 Addresses in Address Lists</h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/383">#383</a>.</p>

<p>Contributed by Jeremy Heiler.</p>

<h3>Transport#read_fully Doesn&#8217;t Try to Recover</h3>

<p>Since transport is replaced by a recovering connection
anyway, and this produces confusing errors up the stack.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/359">#359</a></p>

<p>Contributed by Donal McBreen.</p>

<h3>Client-Provided Session <code>:properties</code> Merged with Defaults</h3>

<p>Client-Provided Session <code>:properties</code> will now be merged with defaults
instead of replacing them. This makes it much more convenient to
override a single key.</p>

<h3>More Predictable RABBITMQ_URL Handling</h3>

<p><code>RABBITMQ_URL</code> no longer will be used if any other
connection options are provided. This makes it possible
to use <code>RABBITMQ_URL</code> for some connections and options
for others in a single OS process.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/403">#403</a></p>

<p>Contributed by Jimmy Petersen.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.4.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.3.1 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/04/06/bunny-2-dot-3-1-is-released/"/>
    <updated>2016-04-06T22:55:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/04/06/bunny-2-dot-3-1-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.3.1">Bunny 2.3.1</a> is released to rubygems.org.</p>

<p><code>2.3.1</code> is a maintenance release.</p>

<h2>Changes between Bunny 2.3.0 and 2.3.1</h2>

<h3>Support (Quoted) IPv6 Addresses in Address Lists</h3>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/383">#383</a>.</p>

<p>Contributed by Jeremy Heiler.</p>

<h3>Transport#read_fully Doesn&#8217;t Try to Recover</h3>

<p>Since transport is replaced by a recovering connection
anyway, and this produces confusing errors up the stack.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/issues/359">#359</a></p>

<p>Contributed by Donal McBreen.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/2.3.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[amqp gem 1.6.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/04/04/amqp-gem-1-dot-6-0-is-released/"/>
    <updated>2016-04-04T08:36:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/04/04/amqp-gem-1-dot-6-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/amqp/versions/1.6.0">amqp gem 1.6.0</a> is released to rubygems.org.</p>

<p>This is a maintenance release that has no new features but updates
<code>amq-protocol</code> dependency and drops Ruby 1.9 support.</p>

<h2>Changes Between 1.5.0 and 1.6.0</h2>

<h3>amq-protocol Update</h3>

<p>Minimum <code>amq-protocol</code> version is now <code>2.0.1</code>.</p>

<h3>Provide More Details in TCP Connection Failure Exception</h3>

<p>Contributed by Neil Hooey.</p>

<p>GH issue: <a href="https://github.com/ruby-amqp/amqp/issues/222">#222</a>.</p>

<h3>Ensures frameset is cleared after an unhandled exception</h3>

<p>Ensures frameset is cleared after an unhandled exception.
This avoids confusing exceptions such as</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>undefined method `method_class' for #&lt;AMQ::Protocol::BodyFrame:0x0000001e8a60b0&gt;</span></code></pre></td></tr></table></div></figure>


<p>Contributed by Michael Lutsiuk.</p>

<p>GH issue: <a href="https://github.com/ruby-amqp/amqp/issues/218">#218</a></p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/amqp/blob/1.6.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> on behalf of the <a href="http://github.com/ruby-amqp">Ruby RabbitMQ Clients</a> Team</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[amqp gem 1.5.3 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/04/04/amqp-gem-1-dot-5-3-is-released/"/>
    <updated>2016-04-04T08:36:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/04/04/amqp-gem-1-dot-5-3-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/amqp/versions/1.5.3">amqp gem 1.5.3</a> is released to rubygems.org.</p>

<p>This is a maintenance release.</p>

<h2>Changes Between 1.5.1 and 1.5.3</h2>

<h3>Provide More Details in TCP Connection Failure Exception</h3>

<p>Contributed by Neil Hooey.</p>

<p>GH issue: <a href="https://github.com/ruby-amqp/amqp/issues/222">#222</a>.</p>

<h3>Ensures frameset is cleared after an unhandled exception</h3>

<p>Ensures frameset is cleared after an unhandled exception.
This avoids confusing exceptions such as</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>undefined method `method_class' for #&lt;AMQ::Protocol::BodyFrame:0x0000001e8a60b0&gt;</span></code></pre></td></tr></table></div></figure>


<p>Contributed by Michael Lutsiuk.</p>

<p>GH issue: <a href="https://github.com/ruby-amqp/amqp/issues/218">#218</a></p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/amqp/blob/1.5.x-stable/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> on behalf of the <a href="http://github.com/ruby-amqp">Ruby RabbitMQ Clients</a> Team</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.3.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/02/28/bunny-2-dot-3-0-is-released/"/>
    <updated>2016-02-28T11:24:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/02/28/bunny-2-dot-3-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.3.0">Bunny 2.3.0</a> is released to rubygems.org.</p>

<p><code>2.3.0</code> is a minor feature release.</p>

<h2>Changes between Bunny 2.2.0 and 2.3.0</h2>

<h3>Thread#abort_on_exception Setting for Consumer Work Pool Threads</h3>

<p><code>Bunny::Session#create_channel</code> now supports a 3rd argument that,
when set to <code>true</code>, makes consumer work pool threads to have
<code>Thread#abort_on_exception</code> set on them.</p>

<p>GH issue: <a href="https://github.com/ruby-amqp/bunny/pull/382">#382</a></p>

<p>Contributed by Seamus Abshere.</p>

<h3>Explicit Transport Closure on Recovery</h3>

<p>Bunny now will explicitly close previosly used transport before starting
connection recovery.</p>

<p>GitHub issue: <a href="https://github.com/ruby-amqp/bunny/pull/377">#377</a>.</p>

<p>Contributed by bkanhoopla.</p>

<h3>No TLS Socket Double-init</h3>

<p>Makes sure that TLS sockets are not double-initialized.</p>

<p>GH issue: <a href="https://github.com/ruby-amqp/bunny/issues/345">#345</a>.</p>

<p>Contributed by Carl Hörberg.</p>

<h3>Lazily Evaluated Debug Log Strings</h3>

<p>GH issue: <a href="https://github.com/ruby-amqp/bunny/pull/375">#375</a></p>

<p>Contributed by Omer Katz.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/master/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Hutch 0.21.0 is Released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2016/02/08/hutch-0-dot-21-dot-0-is-released/"/>
    <updated>2016-02-08T14:52:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2016/02/08/hutch-0-dot-21-dot-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/hutch/versions/0.21.0">Hutch 0.21.0</a> is released to rubygems.org.</p>

<p>This is a bug fix release.</p>

<h2>Changes Between 0.20.0 and 0.21.0 (February 7th, 2016)</h2>

<h3>JRuby Compatibility Restored</h3>

<p>Contributed by Jesper Josefsson.</p>

<h3>More Reliable Rails app Detection</h3>

<p>Rails application detection now won&#8217;t produce false positives
for applications that include <code>config/environment.rb</code>. Instead,
<code>bin/rails</code> and <code>script/rails</code> are used.</p>

<p>Contributed by @bisusubedi.</p>

<h3>Refactoring</h3>

<p>Contributed by Jesper Josefsson and Olle Jonsson.</p>

<h2>Full Changelog</h2>

<p><a href="https://github.com/gocardless/hutch/blob/master/CHANGELOG.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> on behalf of the Hutch maintainers Team.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[March Hare 2.16.0 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2015/12/25/march-hare-2-dot-16-dot-0-is-released/"/>
    <updated>2015-12-25T11:21:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2015/12/25/march-hare-2-dot-16-dot-0-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/march_hare/versions/2.16.0-java">March Hare 2.16.0</a> is
released to rubygems.org.</p>

<p>This is a maintenance release.</p>

<h2>Changes Between 2.15.0 and 2.16.0</h2>

<h3>RabbitMQ Java Client Upgrade</h3>

<p>RabbitMQ Java client dependency has been updated to <code>3.5.7</code>.</p>

<h2>Full Change Log</h2>

<p>Please consult the <a href="https://github.com/ruby-amqp/march_hare/blob/master/ChangeLog.md">change log</a>
to learn about the changes.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> on behalf of the <a href="http://github.com/ruby-amqp">Ruby RabbitMQ Clients</a> Team</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bunny 2.2.2 is released]]></title>
    <link href="http://blog.rubyrabbitmq.info/blog/2015/12/18/bunny-2-dot-2-2-is-released/"/>
    <updated>2015-12-18T00:32:00+03:00</updated>
    <id>http://blog.rubyrabbitmq.info/blog/2015/12/18/bunny-2-dot-2-2-is-released</id>
    <content type="html"><![CDATA[<h2>TL;DR</h2>

<p><a href="https://rubygems.org/gems/bunny/versions/2.2.2">Bunny 2.2.2</a> is released to rubygems.org.</p>

<p><code>2.2.2</code> is a maintenance release.</p>

<h2>Changes between Bunny 2.2.1 and 2.2.2</h2>

<h3>amq-protocol Update</h3>

<p>Minimum required <code>amq-protocol</code> version is now <code>2.0.1</code> which includes
bug fixes.</p>

<h2>Full Change Log</h2>

<p><a href="https://github.com/ruby-amqp/bunny/blob/master/ChangeLog.md">Full change log</a> can be found on GitHub.</p>

<h2>About the Author</h2>

<p><a href="http://twitter.com/michaelklishin">Michael</a> maintains Bunny and several other RabbitMQ client libraries.</p>
]]></content>
  </entry>
  
</feed>
