Я передаю stdout tty и stderr в RabbitMQ (журналы, если быть точным). Эти журналы можно просматривать на веб-сайте, а пока контент передается в RabbitMQ, они потребляются веб-сервером и отправляются клиенту с помощью WebSockets. Журналы немедленно сохраняются после отправки в RabbitMQ.RabbitMQ сохранить сообщения в очереди
Когда пользователь обращается к веб-сайту, резидентные журналы визуализируются, а последовательные части передаются с использованием WebSockets. Проблема в том, что существует условие гонки, так как в сохраняющихся журналах могут отсутствовать фрагменты журнала, которые произошли между рендерингом сайта и получением первого фрагмента через WebSocket.
Моя идея состояла в том, чтобы сохранить все куски в очереди и отправить их через WebSocket после подключения. Кроме того, я бы добавил рабочего, чтобы прослушать какое-то «завершенное» событие, которое затем берет все в очереди и сразу же сохраняется.
Проблема в том, что я не знаю, возможно ли это, используя RabbitMQ или как. Любые идеи или другие решения?
Я не думаю, что это действительно имеет значение, но мой стек использует Ruby Sinatra и Bunny RabbitMQ client.