[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