RabbitMQ
Сцены
- Отделение приложений (Async)
- уведомлять
- Ограничение
- распределение данных
концепция
- Производитель: новости производства
- Потребитель: получатель сообщения
- Очередь сообщений: где можно добраться до места потребителей, потому что новости могут быть отправлены
exchange,exchangeТакже должно быть место для хранения сообщений - Каналы: опирайтесь на связи
-
AckПолучение: ответ, подтверждающий, что сообщение было использовано после получения сообщения. -
exchangeобмен маршрутами -
routeing keyключ маршрутизации -
topicтема
Один производитель соответствует одному потребителю
Producer- ПО промежуточного слоя для сообщений (предоставляет очереди сообщений)
Queue - потребитель
consumer
Рабочие очереди Рабочие очереди / очередь заданий
модель очереди работ
Основная идея очереди работ (она же очередь задач) состоит в том, чтобы избежать немедленного выполнения ресурсоемкой задачи и ожидания ее завершения. Вместо этого мы планируем задачи, которые нужно выполнить позже. Мы инкапсулируем задачу в виде сообщения и отправляем в очередь. Рабочий процесс, работающий в фоновом режиме, удалит задачу и в конечном итоге выполнит задание. Когда вы запускаете много воркеров, задачи будут распределяться между ними.
-
Два способа отправки сообщений через рабочую очередь
- голосование
- очередь задач
- Отключить автоматическое получение (ack)
- Установить количество получения каждого сообщения
- Ручная квитанция
Опубликовать/подписаться
модель публикации-подписки
- Один производитель, много потребителей
- У каждого потребителя своя очередь
- Производитель не отправлял сообщение прямо в очередь, апереключить обмен форвардера
- Каждая очередь должна быть привязана к обмену
- Сообщение, отправленное производителем, попадает в очередь через коммутатор, поэтому сообщение может быть использовано несколькими потребителями.
х переключатель
Сообщение временно сохраняется в обменнике, и очередь принимает тип, чтобы найти обмен для сообщения
тип обмена
- direct
- topic
- headers
- fanout
Routing
модель маршрутизации
существуетpub/subrouteing key
Topics
Тематическая модель
особыйrouteing keyперсонаж
-
#(решетка) может заменить ноль или более слов. -
*Может заменить слово.
exchangeтип должен бытьtopic
RPC
RPCДля удаленного вызова метода на стороне сервера используйтеMQможет быть реализованRPCасинхронный вызов, основанный наDirectРеализация переключения
- Клиент одновременно и производитель, и потребитель.
RPCочередь запросов отправитьRPCВызов сообщения во время прослушиванияRPCочередь ответов - Монитор сервера
RPCМетод очереди запросов, сервер выполняет сообщение после получения - Сервер отправляет результат на выполнение метода
RPCочередь ответов
Ответ сообщения
- noAck
-
noAck = trueРежим автоматического подтверждения После того, как mq назначит сообщение потребителю, оно будет удалено из памяти.Если деловая сторона получит сообщение и не обработает его, сообщение будет потеряно. -
noAck = falseЕсли потребитель кладет трубку и не отправляет квитанцию, то сообщение не потребляется и будет получено другими потребителями.Когда потребление завершено, необходимо отправить квитанцию, чтобы сообщить MQ, что потребление завершено., Или будут другие потребительские расходы на
-
Упорство
-
MQОн хранится в памяти, если он зависнет, наше сообщение все равно потеряется! !но! !RabbitMQПостоянство может быть включено