This is a fork of amqplib which was originally written by Barry Pederson. It is maintained by the Celery project, and used by kombu as a pure python alternative when librabbitmq is not available.
This library should be API compatible with librabbitmq.
Differences from amqplib
*
Supports draining events from multiple channels (Connection.drain_events)
*
Support for timeouts
*
Channels are restored after channel error, instead of having to close the connection.
*
Support for heartbeats
- Connection.heartbeat_tick(rate=2) must called at regular intervals (half of the heartbeat value if rate is 2).
o Or some other scheme by using Connection.send_heartbeat.
*
Supports RabbitMQ extensions:
o
Consumer Cancel Notifications
+ by default a cancel results in ChannelError being raised
+ but not if a on_cancel callback is passed to basic_consume.
o
Publisher confirms
+ Channel.confirm_select() enables publisher confirms.
+ Channel.events['basic_ack'].append(my_callback) adds a callback to be called when a message is confirmed. This callback is then called with the signature (delivery_tag, multiple).
o
Exchange-to-exchange bindings: exchange_bind / exchange_unbind.
+ Channel.confirm_select() enables publisher confirms.
+ Channel.events['basic_ack'].append(my_callback) adds a callback to be called when a message is confirmed. This callback is then called with the signature (delivery_tag, multiple).
*
Support for basic_return
*
Uses AMQP 0-9-1 instead of 0-8.
o Channel.access_request and ticket arguments to methods removed.
o Supports the arguments argument to basic_consume.
o internal argument to exchange_declare removed.
o auto_delete argument to exchange_declare deprecated
o insist argument to Connection removed.
o Channel.alerts has been removed.
o Support for Channel.basic_recover_async.
o Channel.basic_recover deprecated.
*
Exceptions renamed to have idiomatic names:
o AMQPException -> AMQPError
o AMQPConnectionException -> ConnectionError``
o AMQPChannelException -> ChannelError``
o Connection.known_hosts removed.
o Connection no longer supports redirects.
o exchange argument to queue_bind can now be empty to use the "default exchange".
*
Adds Connection.is_alive that tries to detect whether the connection can still be used.
*
Adds Connection.connection_errors and .channel_errors, a list of recoverable errors.
*
Exposes the underlying socket as Connection.sock.
*
Adds Channel.no_ack_consumers to keep track of consumer tags that set the no_ack flag.
*
Slightly better at error recovery
|