lp://staging/txamqp
- Get this branch:
- bzr branch lp://staging/txamqp
Branch merges
Related bugs
Bug #1584806: Test suite fails when running against RabbitMQ 3 | Undecided | Fix Committed |
Related blueprints
Branch information
Recent revisions
- 77. By Free Ekanayaka
-
Sub-class the generic txamqp.
client. Closed error so it's easier for
consuming code to distinguish between AMQP "channel" errors and
"connection" errors (they have different semantics and happen under
different circumstances, so you want to typically handle them
differently).Note that these are protocol-level errors, non transport-level
ones (i.e. the TCP connection is still open after they happen).While at it, some try/except blocks were migrated to py3-compatible
syntax ("Exception, e:" vs "Exception as e:"). - 76. By Free Ekanayaka
-
This branch implements the following changes:
- TwistedDelegate
.connection_ close now sends a 'close-ok' method frame before
calling AMQClient.doClose. There's no response for this type of method, but
we can be confident that it will be written to the transport before the
transport gets closed, since AMQClient.doClose eventually calls
transport.loseConnection( ), which does flush buffers before shutting down
the socket.- AMQClient now has a new "disconnected" instance attribute, which is a
TwistedEvent that consumer code can wait on in order to know when the
transport has actually shut down. This is useful for integrating
txamqp with things like twisted.application. internet. ClientService (that
would start to connect again as soon as the connection is lost).- AMQClient.closed is now properly initialized in the __init__ (it was set
dynamically before), so it's always safe to inspect it.- The AMQClient.sendHB LoopingCall now gets the same clock as AMQClient, instead
of the global reactor. This makes unit-testing easier.- AMQClient.queues (of type TimeoutDeferred
Queue) also get same clock
as AMQClient.- The "reason" parameter of AMQClient.close is now optional and defaults
to ConnectionDone.- AMQClient.close has a new "within" parameter, which tells the client to
possibly try to perform a clean connection shutdown with the 'close'/'close-ok'
frames handshake. If the handshake doesn't succeed in "within" seconds, the
transport connection gets terminated without handshake. The default of the
new parameter is 0, which means "do close immediately without handshake", so
there's should be no behavior change at all for existing code, expect that
close() now returns a Deferred.- The old AMQClient.close logic has been moved to AMQClient.doClose, which is
basically the same pattern as AMQChannel.close/doClose. - AMQClient.
checkHeartbeat now calls abortConnection rather than loseConnection: since
the peer is unresponsive it most probably won't perform the TCP closing handshake
anyways.- Unit tests and integration tests where added for all the behavior above.
- 75. By Free Ekanayaka
-
Merge travis-integration [f=1590428]
This branch adds a .travis.yml file with basic configuration for
making txamqp tests run on Travis.Also, a small flakiness was fixed in a test (apparently basic_qos should
be sent before publishing messages).The README.md file symlinks to the (now markdown-ified) doc/README.
- 73. By Esteve Fernandez
- 72. By Esteve Fernandez
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)