Types of errors that are possible:
- connection failure (after connection has been established)
- connection cannot be established
- missed heartbeats
- authentication errors
- authorisation errors
- queue not found
- exchange not found
- other address validation errors (e.g. exchange is of different type to that specified)
- session terminated by management
- connection terminated by management
- broker side queue limit breached
- exclusive subscriber violation
- feature not supported exception from broker (e,g, unsupported exchange type)
- protocol violation errors (by which I mean any sort of framing error or problem that is a result of a bug in the library or broker rather than being an invalid command by the application)
- internal error in broker, i.e. some as yet unidentified bug, misconfiguration or environmental problem
- internal error in client: same thing for client-side misconfiguration or bugs.
- Exceeded client-side limitation: a client-side queue is over-full. E.g. user has not respected flow control limits on the client side.
- Transaction related errors - not sure what the set is, probably just copy from spec exceptions.
Impact of errors:
- session no longer valid[1]
- connection no longer valid[1]
- transaction aborted
- no longer term impact, specific call simply failed
[1] May want to distinguish between amqp 0-10 session and sessions in the messaging api here. E.g. even if a particular condition kills the amqp 0-10 session/connection, that may not prevent recreating the session or reconnecting.