Bunny 0.9.0.rc2 is released to rubygems.org.
This release fixes a couple of issues discovered since RC1. Bunny 0.9 is now feature complete and used widely enough for us to be going through the RC stage.
If you use an earlier Bunny version, please help us test 0.9 RCs!
Changes between Bunny 0.9.0.rc1 and 0.9.0.rc2
Channel Now Properly Restarts Consumer Pool
In a case when all consumers are cancelled,
will shut down its consumer delivery thread pool.
It will also now mark the pool as not running so that it can be started again successfully if new consumers are registered later.
GH issue: #133.
Bunny::Queue#pop_waiting is Removed
A little bit of background: on MRI, the method raised
reliably. On JRuby, we used a different [internal] queue implementation
from JDK so it wasn’t an issue.
Thread#join, both of which
eventually attempt to acquire a mutex used by Queue#pop, which Bunny
currently uses for continuations. The mutex is already has an owner
and so a ThreadError is raised.
This is not a problem on JRuby because there we don’t use Ruby’s Timeout and Queue and instead rely on a JDK concurrency primitive which provides “poll with a timeout”.
The issue with
has been first investigated and blogged about by Ruby implementers
Finding a workaround will probably take a bit of time and may involve reimplementing standard library and core classes.
We don’t want this issue to block Bunny 0.9 release. Neither we want to ship a broken feature. So as a result, we will drop Bunny::Queue#pop_waiting since it cannot be reliably implemented in a reasonable amount of time on MRI.
Per issue #131.
More Flexible SSLContext Configuration
Bunny will now upgrade connection to SSL in
so it is possible to fine tune SSLContext and socket settings
1 2 3 4 5 6 7 8 9
This also means that
Bunny.new will now open the socket. Previously
it was only done when
Bunny::Session#start was invoked.
Full change log can be found on GitHub.
Plans for 0.9.0 Final
There is still a few things we need to do before Bunny 0.9 final:
- Fix any remaining important issues we get reports for
- Make configuring low-level socket and SSL context
We will also make improvements to the documentation guides.