Восстановление клиентского подключения и failover
Восстановление RabbitMQ client — это ответственность приложения. Broker может принимать повторные подключения, но приложению по-прежнему нужны корректный выбор конечной точки, повторы, подтверждения и поведение с идемпотентностью.
Используйте это руководство, чтобы повысить устойчивость producers и consumers к перезапускам node, rolling upgrades, временным сбоям сети и изменениям конечных точек на уровне площадки.
Содержание
Design PrinciplesJava ExamplePython ExampleEndpoint Failover StrategyVerification ChecklistRelated InformationDesign Principles
Используйте следующие принципы проектирования для production-клиентов:
- Настраивайте более одного адреса broker, если client library это поддерживает.
- Разделяйте подключения producer и consumer, чтобы одна заблокированная цепочка не влияла на другую.
- Используйте heartbeats и разумные timeouts подключения.
- Включайте автоматическое восстановление, если client library предоставляет такую возможность.
- Используйте publisher confirms для producers.
- Используйте manual acknowledgements и идемпотентную обработку для consumers.
- Рассматривайте failover на уровне площадки как изменение конфигурации приложения, даже если включено автоматическое восстановление на уровне node.
Java Example
RabbitMQ Java client поддерживает автоматическое восстановление подключения и topology recovery:
Используйте publisher confirms на channels producer и проверяйте ошибки подтверждения в коде приложения.
Python Example
С pika реализуйте явный цикл повторного подключения и заново создавайте channels или consumers после сбоев подключения:
Если ваш consumer зависит от объявленной topology, воссоздавайте или проверяйте topology после повторного подключения в соответствии с поведением вашей client library.
Endpoint Failover Strategy
Используйте одну из следующих стратегий выбора endpoint:
Автоматическое восстановление между node в одном cluster не переключает приложение автоматически на другую DR-площадку. Failover на уровне площадки по-прежнему требует изменений конфигурации, DNS или service discovery.
Verification Checklist
После изменения настроек восстановления client проверьте, что:
- Приложение может подключаться более чем к одному адресу broker.
- Publishers используют confirms и явно завершаются с ошибкой, если публикации не принимаются.
- Consumers используют manual acknowledgement и могут корректно перезапускаться.
- Цикл повторного подключения не создает дубликаты регистраций consumer.
- Настройки TLS остаются действительными для каждого endpoint, который может использовать client.