[rabbitmq-discuss] pika 0.9.6 and Reconnection Strategies

Aaron Westendorf aaron at agoragames.com
Tue Oct 2 22:09:23 BST 2012


Gavin,

I came to the same conclusion in haigha and removed support for it. I
figured that a disconnect callback gave the user all they needed to
make the appropriate decision on what to do.  Moving this burden to
the user greatly simplified the code and tests.

-Aaron


On Fri, Sep 28, 2012 at 11:52 AM, Gavin M. Roy <gmr at meetme.com> wrote:
> Hi all,
>
> I'm trying to get 0.9.6 wrapped up and out the door (finally). If you're a
> Python developer and use Pika, I wanted to solicit your feedback.
>
> As I've been going through, adding tests and cleaning up the code, I've come
> to the opinion that Reconnection Strategies, at least in their current form
> are not very useful. There are a few reasons for this:
>
> 1) They do not restore state, meaning your application will still have to
> know when you are disconnected and it will have to reestablish all of the
> channels and if it's a consumer, re-issue any state based commands, such as
> Basic.Consume, Confirm.Select etc. If the ReconnectionStrategy classes could
> restore state, I'd see much more value in them.
>
> 2) As it is, the apps using the asynchronous adapters can listen for the
> connection close event and handle this on their own. Again if anyone was
> using the ReconnectionStrategy classes for re-establishing the connection,
> they would have to do the rest of the work this way, anyway.
>
> 3) BlockingConnection, which seems to be the most popular adapter, can not
> use them. Since it currently reimplements the connection closing to raise an
> exception when the connection is remotely closed or dropped, it could not
> expect the event to be fired. A design decision would have to be made to
> force users of BlockingConnection to use an callback for handling
> connections being closed in order to support reconnections strategies or
> keep it the way it is, which is a more pythonic approach.
>
> That being said, I am leaning towards dropping them as part of the core
> library. If I do this, I would include an example that re-implements the
> SimpleReconnectionStrategy class as a demo consumer that shows how to create
> a reconnectable consumer application.
>
> If you're a pika user, do you use the SRS or your own ReconnectionStrategy
> extended class? Are you in favor of removing it or keeping it?  If I end up
> going the route of removing it, it will mean I can get 0.9.6 out, possibly
> this weekend. Keeping it may mean another week or two.
>
> As a side note, 0.9.6pre1 is in the master branch on github and could use
> some testing outside of my environment. If you're interested and able, you
> can install it via pip install -e
> git+git://github.com/pika/pika.git#egg=pika-v0.9.6pre1
>
> Regards,
>
> Gavin
>
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>


More information about the rabbitmq-discuss mailing list