Nodejs быстро работает с RabbitMq

Node.js
Nodejs быстро работает с RabbitMq

RabbitMQ

Сцены

  • Отделение приложений (Async)
  • уведомлять
  • Ограничение
  • распределение данных

концепция

  • Производитель: новости производства
  • Потребитель: получатель сообщения
  • Очередь сообщений: где можно добраться до места потребителей, потому что новости могут быть отправленыexchange,exchangeТакже должно быть место для хранения сообщений
  • Каналы: опирайтесь на связи
  • AckПолучение: ответ, подтверждающий, что сообщение было использовано после получения сообщения.
  • exchangeобмен маршрутами
  • routeing keyключ маршрутизации
  • topicтема

'mq简单队列'

Один производитель соответствует одному потребителю

  • Producer
  • ПО промежуточного слоя для сообщений (предоставляет очереди сообщений)Queue
  • потребительconsumer

Рабочие очереди Рабочие очереди / очередь заданий

модель очереди работ

'任务队列'

Основная идея очереди работ (она же очередь задач) состоит в том, чтобы избежать немедленного выполнения ресурсоемкой задачи и ожидания ее завершения. Вместо этого мы планируем задачи, которые нужно выполнить позже. Мы инкапсулируем задачу в виде сообщения и отправляем в очередь. Рабочий процесс, работающий в фоновом режиме, удалит задачу и в конечном итоге выполнит задание. Когда вы запускаете много воркеров, задачи будут распределяться между ними.

  • Два способа отправки сообщений через рабочую очередь

    • голосование
    • очередь задач
      1. Отключить автоматическое получение (ack)
      2. Установить количество получения каждого сообщения
      3. Ручная квитанция

Опубликовать/подписаться

модель публикации-подписки

'pubsub'

  1. Один производитель, много потребителей
  2. У каждого потребителя своя очередь
  3. Производитель не отправлял сообщение прямо в очередь, апереключить обмен форвардера
  4. Каждая очередь должна быть привязана к обмену
  5. Сообщение, отправленное производителем, попадает в очередь через коммутатор, поэтому сообщение может быть использовано несколькими потребителями.

х переключатель

Сообщение временно сохраняется в обменнике, и очередь принимает тип, чтобы найти обмен для сообщения

тип обмена

  • direct
  • topic
  • headers
  • fanout

'pubsub'

Routing

модель маршрутизации

'routeing'

существуетpub/subrouteing key

'routeing'

Topics

Тематическая модель

'topic'

особыйrouteing keyперсонаж

  • #(решетка) может заменить ноль или более слов.
  • *Может заменить слово.

exchangeтип должен бытьtopic

'topic'

RPC

'rpc'
RPCДля удаленного вызова метода на стороне сервера используйтеMQможет быть реализованRPCасинхронный вызов, основанный наDirectРеализация переключения

  1. Клиент одновременно и производитель, и потребитель.RPCочередь запросов отправитьRPCВызов сообщения во время прослушиванияRPCочередь ответов
  2. Монитор сервераRPCМетод очереди запросов, сервер выполняет сообщение после получения
  3. Сервер отправляет результат на выполнение методаRPCочередь ответов

Ответ сообщения

  • noAck
    • noAck = trueРежим автоматического подтверждения После того, как mq назначит сообщение потребителю, оно будет удалено из памяти.Если деловая сторона получит сообщение и не обработает его, сообщение будет потеряно.
    • noAck = falseЕсли потребитель кладет трубку и не отправляет квитанцию, то сообщение не потребляется и будет получено другими потребителями.Когда потребление завершено, необходимо отправить квитанцию, чтобы сообщить MQ, что потребление завершено., Или будут другие потребительские расходы на

Упорство

  • MQОн хранится в памяти, если он зависнет, наше сообщение все равно потеряется! !но! !RabbitMQПостоянство может быть включено

адрес репозитория кода github

node_rabbitMQ_mqtutorial