RabbitMQ
Сцены
- Отделение приложений (Async)
- уведомлять
- Ограничение
- распределение данных
концепция
- Производитель: новости производства
- Потребитель: получатель сообщения
- Очередь сообщений: где можно добраться до места потребителей, потому что новости могут быть отправлены
exchange
,exchange
Также должно быть место для хранения сообщений - Каналы: опирайтесь на связи
-
Ack
Получение: ответ, подтверждающий, что сообщение было использовано после получения сообщения. -
exchange
обмен маршрутами -
routeing key
ключ маршрутизации -
topic
тема
Один производитель соответствует одному потребителю
Producer
- ПО промежуточного слоя для сообщений (предоставляет очереди сообщений)
Queue
- потребитель
consumer
Рабочие очереди Рабочие очереди / очередь заданий
модель очереди работ
Основная идея очереди работ (она же очередь задач) состоит в том, чтобы избежать немедленного выполнения ресурсоемкой задачи и ожидания ее завершения. Вместо этого мы планируем задачи, которые нужно выполнить позже. Мы инкапсулируем задачу в виде сообщения и отправляем в очередь. Рабочий процесс, работающий в фоновом режиме, удалит задачу и в конечном итоге выполнит задание. Когда вы запускаете много воркеров, задачи будут распределяться между ними.
-
Два способа отправки сообщений через рабочую очередь
- голосование
- очередь задач
- Отключить автоматическое получение (ack)
- Установить количество получения каждого сообщения
- Ручная квитанция
Опубликовать/подписаться
модель публикации-подписки
- Один производитель, много потребителей
- У каждого потребителя своя очередь
- Производитель не отправлял сообщение прямо в очередь, апереключить обмен форвардера
- Каждая очередь должна быть привязана к обмену
- Сообщение, отправленное производителем, попадает в очередь через коммутатор, поэтому сообщение может быть использовано несколькими потребителями.
х переключатель
Сообщение временно сохраняется в обменнике, и очередь принимает тип, чтобы найти обмен для сообщения
тип обмена
- direct
- topic
- headers
- fanout
Routing
модель маршрутизации
существуетpub/sub
routeing 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
Постоянство может быть включено