[rabbitmq-discuss] ANN Bunny 0.9.0.pre1 is released, feedback wanted

Mark markizko at gmail.com
Thu Nov 29 12:44:30 GMT 2012


Hey, Michael, congratulations with the release!

I'm in the process of migrating of some code from bunny 0.8 to 0.9 pre, and 
there are some breaking api changes that aren't mentioned in the changelog.

What I've found so far: 
1. Bunny connection instance no longer has #queue and #exchange methods, 
you need to explicitly create and use channel instances
2. Channels don't have #exchange method either, you need to use one of the 
#topic, #direct or #fanout methods to declare specific type of queue, or 
#default_exchange for the default topic exchange (new convenience methods 
are actually mentioned in the changelog)
3. Exchange#publish: :key option is now :routing_key
4. Exchange#publish (and I reckon, other methods too) now does actual 
packet sending asynchronously in the background, returning immediately. 
Prior versions returned after receiving publish-ok packet.
5. Queue#subscribe no longer has :message_max and :timeout options
6. Queue#subscribe block signature is different from what Queue#pop returns 
(2 args vs 3 args)
7. You can't break from Queue#subscribe block anymore. LocalJumpError will 
arise. That it worked was probably a hack. 
8. You can't exit from the subscription block anymore? After some fiddling 
I found that `throw :terminate` works. Is it the right way?
9. Bunny seems to be thread-safe now (as in safely reuse the same bunny / 
channel / exchange / queue instances in different threads). If so, then yay!


On Wednesday, November 28, 2012 1:56:39 AM UTC+4, Michael Klishin wrote:
>
> After a recent [1] announcement of what's going on with Bunny 0.9,
> time for initial preview release and some feedback gathering.
>
> 0.9.0.pre1 is up on rubygems.org:
> https://rubygems.org/gems/bunny/versions/0.9.0.pre1
>
> What's in the box?
>
>  * All AMQP 0.9.1 features implemented
>  * Proper content framing: you now can publish empty messages and messages 
> larger than max frame size (128K)
>  * "Real" support for consumers (Bunny::Queue#subscribe): Bunny no longer 
> reimplements some RabbitMQ features in the client, now runs consumer 
> handlers in a thread pool.
>  * All but one RabbitMQ extension to the protocol (publisher confirms) are 
> supported, more nice features to come in the future
>  * Operations that block and return values in earlier releases still work 
> the same way, however, network activity and dispatch of incoming messages 
> (deliveries, returned messages) now happens in separate threads. This means 
> that Rubinius and JRuby, Bunny even will now use multiple cores if 
> available.
>
> In addition, Bunny now uses amq-protocol under the hood so all 
> improvements there
> will benefit both amqp gem and Bunny.
>
> Now, Bunny has always been a little scarse on documentation and this 
> release has some
> breaking API changes (almost all are around consumer-related 
> functionality, so if you only
> publish messages, it should be nearly completely backwards-compatible). 
> Where to
> find what the new API looks like?
>
> The answer is in our new shiny test suite:
>
> https://github.com/ruby-amqp/bunny/tree/migrate_to_amq_protocol/spec/higher_level_api/integration
>
> And here's initial bits of the change log, which will be greatly expanded 
> before 0.9.0 final:
>
> https://github.com/ruby-amqp/bunny/blob/migrate_to_amq_protocol/ChangeLog.md
>
> I encourage you to take a look and ideally give it a try.
>
> What is left to be done:
>
>  * Specifics around how to handle error conditions, network splits,  
>  * Graceful consumer shutdown
>  * Publisher confirms support with a nice API (e.g. 
> Bunny::Exchange#publish_and_wait_for_confirmation)
>  * Documentation guides (we will port content and examples from 
> http://rubyamqp.info)
>  * Proper change log
>  * HTTP API support, if time permits and there is enough interest
>
> This is the first preview of several: while most of the work is done, to 
> compensate
> for some breaking changes in this version, we will have to spend some time 
> really
> polishing and documenting it.
>
> I personally really like how the new Bunny shapes up. I think it can be a 
> better
> RabbitMQ Ruby client than amqp gem in almost every aspect. But to make it 
> so,
> we need more input from developers like you. Please give it a try and tell 
> us what you think!
>
>
> 1. 
> https://groups.google.com/forum/?fromgroups=#!topic/ruby-amqp/7gxdN9xxeOE
> -- 
> MK
>
> http://github.com/michaelklishin
> http://twitter.com/michaelklishin
>
>  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20121129/163de4a3/attachment.htm>


More information about the rabbitmq-discuss mailing list