TGViewer
DevOps | Вопросы собесов DevOps | Вопросы собесов @easy_devops · 5.57K subscribers
Post #2855 661
🤔 Что такое брокеры сообщений?

Это программные системы, которые позволяют обмениваться данными между разными компонентами приложения или между различными приложениями. Они действуют как посредники, принимая сообщения от отправителей (producers) и доставляя их получателям (consumers).

🚩Основные функции брокеров сообщений

🟠Прием и маршрутизация сообщений
Сообщения отправляются от одного компонента и доставляются нужному получателю. Брокер определяет, куда отправить сообщение, используя темы (topics), очереди (queues) или маршруты (routing keys).

🟠Асинхронное взаимодействие
Отправитель может передать сообщение, не дожидаясь его обработки, что повышает производительность системы.

🟠Очереди сообщений
Если получатель временно недоступен, сообщение сохраняется в очереди до тех пор, пока оно не будет доставлено.

🟠Гарантированная доставка
Некоторые брокеры предоставляют механизмы подтверждения получения сообщений (acknowledgment), чтобы избежать их потери.

🟠Распределение нагрузки
Сообщения могут быть обработаны несколькими получателями, что позволяет распределить нагрузку между ними.

🟠Фильтрация и маршрутизация
Сообщения доставляются только тем потребителям, которые их ожидают, используя фильтры или ключи маршрутизации.

🚩Примеры использования брокеров сообщений

🟠Микросервисы
Компоненты приложения обмениваются данными через брокер, что позволяет им оставаться изолированными и независимыми.

🟠Логирование и мониторинг
Сбор логов и метрик от множества источников с их дальнейшей обработкой.

🟠Управление задачами
Постановка задач в очередь для выполнения одним или несколькими воркерами.

🟠Интеграция систем
Связывание разнородных систем, которые обмениваются данными.

🚩Примеры брокеров сообщений

🟠RabbitMQ
Протокол: AMQP (Advanced Message Queuing Protocol). Поддерживает очереди, маршрутизацию, подтверждения доставки. Хорошо подходит для сложных сценариев с разными типами маршрутизации.

🟠Apache Kafka
Протокол: Проприетарный. Отличается высокой производительностью и надежностью. Используется для потоковой обработки данных, аналитики в реальном времени.

🟠Redis (Pub/Sub)
Протокол: Redis. Простая и быстрая модель pub/sub. Хорошо подходит для временных сообщений без сохранения состояния.

🟠ActiveMQ
Протокол: AMQP, STOMP, MQTT. Гибкий и совместимый с различными сценариями.

🟠NATS
Легковесный и быстрый брокер для приложений, требующих низкой задержки.

🚩Как работают брокеры сообщений

Producers (отправители) отправляют сообщение в брокер.
Брокер размещает сообщение в соответствующей очереди или теме.
Consumers (получатели) получают сообщение: Либо сразу, если они активны. Либо позже, если оно сохраняется в очереди.

🚩Пример использования RabbitMQ

1⃣Отправитель публикует сообщение в очередь:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
connection.close()


2⃣Получатель забирает сообщение из очереди:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
print(f"Received {body}")

channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
channel.start_consuming()


🚩Плюсы использования

➕Разделение ответственности
Компоненты системы сосредотачиваются на своих задачах, а не на доставке данных.
➕Масштабируемость
Легко добавлять новых потребителей или отправителей.
➕Устойчивость к сбоям
Брокеры обеспечивают сохранность сообщений, даже если один из компонентов временно недоступен.
➕Гибкость
Возможность использовать различные стратегии маршрутизации и обработки данных.

Ставь 👍 и забирай 📚 Базу знаний
  • 🔥 1
More from @easy_devops
  1. Oct 9, 2026🤔 Можно ли на лету изменить настройки DNS в контейнере через CLI? Да, можно: docker exec…
  2. Oct 9, 2026Post #2894
  3. Oct 9, 2026🤔 Из чего состоит ELK стек? ELK (Elasticsearch, Logstash, Kibana) – это стек для сбора, о…
  4. Oct 8, 2026Post #2892
  5. Oct 8, 2026🤔 На CentOS Linux ceilings — он везде отключён или активен? Скорее всего, имеется в виду…
  6. Oct 8, 2026🤔 Почему плохо запускать контейнер от рута? Запуск контейнеров от имени пользователя root…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →