Брокер сообщений на примере RabbitMQ

5206c19df417b8876825b5561344c1a0?s=47 Exactpro
September 10, 2020

Брокер сообщений на примере RabbitMQ

Илья Логинов
разработчик, Exactpro

10 сентября 2020
Online Dev Meetup

Илья Логинов, разработчик из Exactpro, расскажет о том, что такое брокер сообщений, и поделится опытом использования RabbitMQ.

---
Подписывайтесь на Exactpro в социальных сетях:

LinkedIn https://www.linkedin.com/company/exactpro-systems-llc
Twitter https://twitter.com/exactpro
Facebook https://www.facebook.com/exactpro/
Instagram https://www.instagram.com/exactpro/

Подписывайтесь на YouTube канал Exactpro http://www.youtube.com/c/ExactproVlog

5206c19df417b8876825b5561344c1a0?s=128

Exactpro

September 10, 2020
Tweet

Transcript

  1. Build Software to Test Software exactpro.com Брокер сообщений на примере

    RabbitMQ Илья Логинов Java Разработчик, Exactpro 10 сентября 2020
  2. 2 Build Software to Test Software exactpro.com Брокеры сообщений Service

    Service Service Message broker
  3. 3 Build Software to Test Software exactpro.com Плюсы брокеров сообщений

    1. Временное хранение сообщений 2. Маршрутизация сообщений 3. Масштабирование
  4. 4 Build Software to Test Software exactpro.com RabbitMQ RabbitMQ Publisher

    Subscriber Exchange Queue Routing
  5. 5 Build Software to Test Software exactpro.com Типы exchange 1.

    Direct 2. Topic 3. Fanout 4. Headers Могут расширяться с помощью плагинов
  6. 6 Build Software to Test Software exactpro.com Типы exchange. Direct

    RabbitMQ Queue 1 Queue 3 Producer 1 Producer 3 Producer 2 Exchange rk-a rk-b rk-c rk-a Queue 2 rk-b, rk-c rk-b
  7. 7 Build Software to Test Software exactpro.com RabbitMQ Queue 1

    Queue 3 Producer Exchange Queue 2 Типы exchange. Topic user.delete.profile user.delete.profile user.# user.*.profile
  8. 8 Build Software to Test Software exactpro.com RabbitMQ Queue 1

    Queue 3 Producer Exchange Queue 2 Типы exchange. Fanout any routing key
  9. 9 Build Software to Test Software exactpro.com Producer 1 Producer

    2 RabbitMQ Queue 1 Queue 2 Exchange Типы exchange. Headers log = debug report = xml log = warn log = debug report = xml log = warn report = json Требуется дополнительный аргумент “x-match”
  10. 10 Build Software to Test Software exactpro.com Флаги exchange 1.

    Passive - проверка на существование 2. Durable - будет существовать после перезагрузки (храниться на диске) 3. Auto-delete - удаление, при отсутствии очередей 4. Internal - блокирование непосредственной публикации
  11. 11 Build Software to Test Software exactpro.com Флаги очередей 1.

    Passive - проверка на существование 2. Durable - будет существовать после перезагрузки (храниться на диске) 3. Auto-delete - удаление, при отсутствии подписчиков 4. Exclusive - ограничивает кол-во подписчиков до 1
  12. 12 Build Software to Test Software exactpro.com Аргументы очередей 1.

    x-message-ttl - время жизни сообщений в очереди 2. x-expires - время жизни очереди 3. x-max-length[-bytes] - ограничение размера очереди 4. x-overflow - стратегия при переполнении 5. ...
  13. 13 Build Software to Test Software exactpro.com Соединение Connection -

    позволяет подключиться к серверу (сеансовый) Channel - позволяет взаимодействовать с сервером Если происходит ошибка в операции, то channel закрывается на стороне сервера
  14. 14 Build Software to Test Software exactpro.com Публикация сообщений Сообщения

    в RabbitMQ представляют массив байт При отправке сообщение требуется указать exchange Также дополнительно можно указать 2 флага: 1. Mandatory - возвращение сообщение при неуспешной маршрутизации 2. Immediate - попытка немедленно доставить сообщение
  15. 15 Build Software to Test Software exactpro.com Получение сообщений Если

    очередь не является exclusive, то на нее могут подписывать несколько подписчиков. После подписки сервер начинает отправлять delivery-объекты, которые содержат метаданные и само сообщение
  16. 16 Build Software to Test Software exactpro.com Подтверждение доставки При

    получении сообщений мы должны сообщить RabbitMQ об успешной доставке. Это может использоваться для управления потоком сообщений Существую 2 типа подтвержения доставки 1. Автоматическая 2. Ручная
  17. 17 Build Software to Test Software exactpro.com Автоматическое подтверждение доставки

    При подписке на очередь мы можем указать флаг auto-ack Сообщение будет считаться доставленным сразу после отправки При таком подходе приложение должно быть готово обрабатывать большое количество сообщений за короткий промежуток
  18. 18 Build Software to Test Software exactpro.com Ручное подтверждение доставки

    При ручном подтверждении используются 3 метода: 1. basic.ack - успех 2. basic.nack - неудача 3. basic.reject - неудача Недоставленное сообщение возвращается в очередь
  19. 19 Build Software to Test Software exactpro.com Спасибо за внимание