Большие ли задержки в очередях сообщений?

Хочу чтобы один микросервис передал информацию другому. Я так понимаю, что для этого используется очередь сообщений (например rabbitMQ). Какая может быть задержка? Можно ли очередь сообщений держать где то в памяти?
  • Вопрос задан
  • 301 просмотр
Решения вопроса 2
vabka
@vabka
Токсичный шарпист
Какая может быть задержка?

Зависит от конфига и скорости диска. Обычно не критично. Может порядка нескольких-десятка миллисекунд (не измерял).
Можно ли очередь сообщений держать где то в памяти?

В смысле не сохранять на диск? Да, можно:
https://www.rabbitmq.com/persistence-conf.html

Ну и это речь конкретно про rabbitmq. В других брокерах может быть иначе.
Ответ написан
@yarkin
Если говорить только о задержке внутри RabbitMQ при работе только в памяти, то не думаю, что она превысит пары миллисекунд на незагруженной системе. В RabbitMQ если очередь не-durable, сообщение не имеет флага persistent и нет memory pressure (хватает памяти), то обработка происходит чисто в памяти.
Но, если всё что нужно, это передать данные от одного сервиса к другому, то поднимать инстанс RabbitMQ может быть очень накладно. Попробуйте для начала вызывать второй сервис из первого с передачей данных напрямую. Другим вариантом может быть простой message bus (например, NATS), который не имеет очередей и не хранит данные, а отправляет сразу (или дропает сообщение, если нет подписчиков).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы