Skip to content

NATS

Преимущества и недостатки

NATS - простой в использовании высокопроизводительный брокер сообщений, написанный на Golang. Если ваше приложение не требует сложной логики маршрутизации, должно справляться с высокой нагрузкой, просто масштабироваться и не требовать больших затрат на железо, NATS станет для вас отличным выбором.

Note

Подробнее с NATS вы можете ознакомиться на официальном сайте

Однако, у NATS есть и недостатки, о которых вам стоит знать:

  • Сообщения не персистентны. Если сообщение будет опубликовано пока ваш потребитель отключен - оно будет потеряно.
  • Отстутствуют механизмы сложной маршрутизации.
  • Отстутствуют механизмы подтверждения получения и обработки сообщений со стороны потребителя.

Однако, эти недостатки исправляются использованием персистентного уровня - JetStream. Если вам нужны строгие гарантии доставки и обработки сообщений в небольшой ущерб скорости работы и потребляемым ресурсам, вы можете воспользоваться NatsJS.

Правила маршрутизации

NATS не обладает возможностью настраивать сложные правила маршрутизации. Единственной сущностью в NATS является subject, на который можно подписаться либо напрямую по имени, либо по паттерну регулярного выражения.

Оба примера рассмотрены чуть далее.

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