GH-1296: Fix DMLC Recovery: Missing Queue at Start

Resolves https://github.com/spring-projects/spring-amqp/issues/1296

- Add `MissingQueueEvent`
- Fix detection of a deleted queue in recovery - previously incorrectly used the
  absense of the queue in `consumersByQueue`, which can be empty if missing during
  start
- Add an index to `SimpleConsumer`
- When adjusting consumer counts, look for gaps in the index sequence because reducing
  the consumer count can remove any idle consumer.
- Change consumers to restart to a `Set` to avoid OOM when no broker
  (see https://github.com/spring-projects/spring-amqp/pull/642)
- Unconditionally add consumers to `consumersToRestart`

**cherry-pick to 2.2.x, 2.1.x**
This commit is contained in:
Gary Russell
2021-01-12 12:12:21 -05:00
committed by Artem Bilan
parent d5f81a62c3
commit 2c929ff8d9
8 changed files with 227 additions and 36 deletions

View File

@@ -2056,6 +2056,7 @@ Several other events are published at various stages of the container lifecycle:
* `AsyncConsumerStoppedEvent`: When the consumer is stopped - `SimpleMessageListenerContainer` only.
* `ConsumeOkEvent`: When a `consumeOk` is received from the broker, contains the queue name and `consumerTag`
* `ListenerContainerIdleEvent`: See <<idle-containers>>.
* `MissingQueueEvent`: When a missing queue is detected.
[[consumerTags]]
===== Consumer Tags