🦾 IT-Качалка Давида Шекунца 💪
2023-10-22 06:47
Вы блять шутите: представьте, очередь с auto-delete, такая же, как 4000 других на этом же RMQ, на которых от 1 до 10 консьюмеров
Но когда именно на ней 4 consumer, все ок, добавляется такойже 5 и она моментально удаляется...
По всем логам и метрикам всех сервисов, железок и узлов все абсолютно ок
Как починили? Перезапустили ноды самого RMQ и оно заработало...
Ну как нахер так...
По какому принципу он может удалять 1 конкуретную очередь пока ты не перезагрузишь сам RMQ?
Это не ошибка кода, потому что (исключая то, что мы максимально прямолинейно с ним общаемся) она бы тогда повторилась и при перезагрузке
Это ошибка в \"battle-tested\" технологии, которая обязана гарантировать 1 свою главную обязанность - доставлять данные от паблишера консьюмеру по объявленным очередям
Вы знаете что о такой ситуации пишут в коммьюнити? Переходите на quorum очереди
А знаете что такое quorum очереди? Это очереди с кластеризованным персистентным хранилищем (Kafka, без лога)
Почему это сработает? Потому что тогда ответственность за очередь распределяется на кластер и есть шанс, что одна нода не позволит другой навредить очереди
Но, во-первых, суть блять взятия RMQ была именно в том, что нас в этих очередях не нужна персистентность, нас интересовала скорость с гарантией последовательности, во-вторых, почему кластеризация должна решать вопрос ошибок в кор механике самой системы не давая ей самостоятельно удалить вашу очередь «просто-потому что»
По факту они предлагают делать латентную версию Kafka, чтобы просто повысить шанс, что RMQ не трахнет вас очередным внутренним багом...
P.S.
Когда я все это написал я понял что вымораживает меня больше всего и заколачивает последний гвоздь гроба RMQ:
После удаления очереди эта сука не только НЕ ПРИСЛАЛ ОШИБКУ, так ещё эта гнида ПРОДОЛЖАЛА ДЕРЖАТЬ ОТКРЫТЫЕ КАНАЛЫ на эту очередь
Мы смогли продебажить и увидели, что это не приложение продолжало держать каналы, а сам RMQ
И он воообще ничего нам не сообщил, ни ошибки, ни инфы о смерти очереди
Вот этому нет никакого оправдания
P.P.S.
Я до сих пор в таком шоке, что я надеюсь, что это мы где-то накосепорили и всему этому есть объяснение, потому что ну как тогда вообще можно использовать RMQ, если он может такое вытворять (а используют его многие)
Если ситуация повторится и мы получим больше инфы, я напишу