Обновить
4K+
1

Пользователь

1
Рейтинг
Отправить сообщение

Постараюсь ответить) В целом было несколько причин:

  1. У нас нет практического опыта с NATS, но из того что читал, там партицирование устроено как в kafka, то есть нельзя создать миллион партиций, чтобы каждый новый ключ попадал в свою. Точнее вроде можно, но будет связано с просадкой перфоманса и ограничением ресурсов. Как следствие будет ситуация что сообщения с разными ключами будут попадать в одну партицию и есть риск что если сообщение с ключом `a` не может обработаться и застряло, то ключ `b` будет ждать.

    Вот тут https://github.com/nats-io/nats-server/discussions/2798 было обсуждение, но как понял не реализовано и чтобы такого добиться нужно писать костыли. Также в этой цепочке не нашел возможность отложить сообщение на опредлеленное время, чтобы не блокировать воркеры и они могли в это время обрабатывать другие партиции.

  2. К тому же у нас уже были 2 очереди и добавлять в проект 3 сильно не хотелось чтобы не повышать порог входа и сложность инфраструктуры. А redis как must have. Уже используется для rate limit и блокировок поэтому выбор пал на него.

Информация

В рейтинге
1 992-й
Зарегистрирован
Активность