NATS¶
Преимущества и недостатки¶
NATS - простой в использовании высокопроизводительный брокер сообщений, написанный на Golang. Если ваше приложение не требует сложной логики маршрутизации, должно справляться с высокой нагрузкой, просто масштабироваться и не требовать больших затрат на железо, NATS станет для вас отличным выбором.
Note
Подробнее с NATS вы можете ознакомиться на официальном сайте
Однако, у NATS есть и недостатки, о которых вам стоит знать:
- Сообщения не персистентны. Если сообщение будет опубликовано пока ваш потребитель отключен - оно будет потеряно.
- Отстутствуют механизмы сложной маршрутизации.
- Отстутствуют механизмы подтверждения получения и обработки сообщений со стороны потребителя.
Однако, эти недостатки исправляются использованием персистентного уровня - JetStream. Если вам нужны строгие гарантии доставки и обработки сообщений в небольшой ущерб скорости работы и потребляемым ресурсам, вы можете воспользоваться NatsJS.
Правила маршрутизации¶
NATS не обладает возможностью настраивать сложные правила маршрутизации. Единственной сущностью в NATS является subject
, на который можно подписаться либо напрямую по имени, либо по паттерну регулярного выражения.
Оба примера рассмотрены чуть далее.
С целью поддержки возможностей горизонтально масштабировать потребителей, NATS поддерживает функционал queue group
:
сообщение, отправленное в subject
будет обработано случайным потребителем из queue group
, подписанной на этот subject
.
Такой подход позволяет увеличить скорость обработки subject
в N раз при запуске N потребителей с одной группой.