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

Chris Duncan chris.d at frugalit.co.uk
Thu Nov 29 13:12:43 GMT 2012


Hi Mark,

Just to let you know, Michael has already made some changes that address a 
number of your points in the 'migrate_to_amq_protocol' branch on GitHub.

Cheers,

Chris

On Thursday, 29 November 2012 12:44:30 UTC, Mark wrote:
>
> 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/9ccb6005/attachment.htm>


More information about the rabbitmq-discuss mailing list