Я использую RabbitMQ для передачи долгосрочных изменений состояния процесса на веб-сервер. Сервер приложений будет публиковать события в очереди, а веб-сервер будет использовать эти события.
Очереди являются временными (x-expires: 300000, auto-delete: true) и инициируются при первом запуске веб-приложения.
Проблема, с которой я сталкиваюсь, заключается в том, что очередь периодически умирает. Я выяснил, что одна проблема связана с настройкой RequestedHeartbeat. Поскольку у нас также была какая-то длительная задача на веб-сервере, очередь периодически умирала. После того, как я увеличил его значение, длительная задача в Интернете работает нормально.
Однако очередь все равно периодически умирает. Rabbit MQ имеет постоянно увеличивающийся файл журнала со следующими ошибками. Некоторые из этих ошибок происходят из другой среды dev/staging/uat, но такие же ошибки
2020-04-30 01:16:15.218 [error] <0.3578.286> Channel error on connection <0.30037.285> (10.10.122.111:25734 -> 10.10.234.111:5672, vhost: '/', user: 'someuser'),
channel 5: operation basic.consume caused a channel exception not_found: no queue 'QueueNo132321011360' in vhost '/'
Кроме того, 1) Как определить, что временная очередь умерла?
2) Каков наилучший механизм обновления временной очереди с веб-сервера?
auto-delete:true
, пока есть потребитель. Очередь будет автоматически удалена только в том случае, если больше нет потребителей. Поэтому проверьте своего потребителя, если в какой-то момент он перестанет потреблять из этой очереди или в какой-то момент каким-то образом отключится от вашего сервера Rabbit. - person mr.b   schedule 30.04.2020