Skip to content
Jonathan Halterman edited this page Jan 10, 2014 · 10 revisions

Lyra was designed to handle and recover from any RabbitMQ failure that could reasonably occur. These failure scenarios along with the recovery sequences are described here.

Connection closure

Connections can be unexpectedly closed due to various reasons including network failure, server errors, or administrative actions.

  • Connection unexpectedly closed
    • The connection, exchanges, queues, bindings, channels and consumers are recovered.

Connection invocation failure

  • Connection invocation fails
    • Invocation is retried (if permissible) according to the retry policy else the failure is rethrown.

Channel closure

Channels can be unexpectedly closed for various reasons including invalid application initiated operations, connection closure, and server errors. The covered failure scenarios include:

  • Channel unexpectedly closed
    • The channel, queues, bindings and consumers are recovered.
  • Channel unexpectedly closed, connection closed
    • The connection, channel, queues, bindings and consumers are recovered.
  • Channel unexpectedly closed, recovery fails
    • Recovery is re-attempted according to the recovery policy.

Channel invocation failure

Channel invocations failures often result in the channel being closed which requires that the channel be recovered in addition to the invocation being retried (if a retry is permissible for the type of failure). The covered failure scenarios include:

  • Channel invocation fails
    • Invocation retried (if permissible) according to the retry policy else the failure is rethrown.
  • Channel invocation fails, channel closed
    • The channel, queues, bindings and consumers are recovered and the invocation is retried (if permissible).
  • Channel invocation fails, connection closed
    • The connection, channel, queues, bindings and consumers are recovered and the invocation is retried (if permissible).
  • Channel invocation fails, channel closed, recovery fails
    • Recovery is re-attempted according to the recovery policy. Once recovery succeeds the invocation is retried (if permissible) according to the retry policy.

Consumer closure

Consumers can be unexpectedly closed as the result of a channel error or closure, or a connection closure.

  • Consumer is unexpectedly closed due to a channel closure.
    • Any queues and queue bindings that the consumer depends on which were created through the channel's connection should be recovered prior to the consumer being recovered.
Clone this wiki locally