Есть ли способ изящно остановить ListenerContainer
и связанные с ним Consumers
.
Чего я пытаюсь достичь.
- Прекратить потребление сообщений.
- Изящно остановиться
ListenerContainer
.
- Ожидание долго работающих потребителей и подтверждение после завершения.
Я могу остановить ListenerContainers
, используя consumer.stop()
, но активные долгосрочные потребители не будут успешно завершены, и обработанные сообщения не будут подтверждены и, следовательно, будут обработаны снова, как только ListenerContainer будет возобновлен .
выход
Waiting for workers to finish.
Workers not finished.
Closing channel for unresponsive consumer: Consumer@6d229b1c
Сообщение было обработано, но не подтверждено.
Возможно, мне удастся добиться постепенного отключения с помощью setForceCloseChannel(false)
, но можно ли проверить, закончили ли отмененные потребители? SimpleMessageListenerContainer.doShutDown () имеет локальный список с ограниченным доступом «cancelledConsumers».