Sobes.tech
Назад к вопросам
Junior — Middle
52

Можешь ли назвать популярные системы обмена сообщениями, применяемые в микроархитектуре сервисов?

Компании, где спрашивали
IT Smart

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

В микроархитектуре сервисов чаще всего используют брокеры сообщений для асинхронного обмена и разгрузки синхронных HTTP-вызовов. Обычно ожидают, что будут названы Kafka, RabbitMQ, ActiveMQ и, возможно, JMS как стандарт API для Java-мира. Также важно понимать, что выбор зависит от сценария: стриминг, очереди задач, публикация/подписка, гарантии доставки.

Определение:

Система обмена сообщениями — это промежуточный слой, через который сервисы передают данные не напрямую, а через очереди или топики. Это помогает слабо связывать сервисы, повышать отказоустойчивость и обрабатывать нагрузку асинхронно. В микроархитектуре такие системы часто используются для событий, фоновых задач и интеграции между сервисами.

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

Например, сервис заказов публикует событие OrderCreated, а сервисы оплаты, уведомлений и склада подписаны на него и реагируют независимо.

// Публикация события
public void createOrder(Order order) {
    orderRepository.save(order);
    messageBus.publish("order.created", order.getId());
}

// Обработчик в другом сервисе
public void onOrderCreated(String orderId) {
    notificationService.sendOrderCreatedEmail(orderId);
}

Пояснение кода:

Код показывает типичный сценарий событийного взаимодействия. Сервис заказов сохраняет заказ и отправляет сообщение в брокер. Другой сервис получает событие и выполняет свою бизнес-логику независимо от сервиса-источника. Такой подход снижает связность и позволяет обрабатывать события асинхронно.

Ключевые моменты:

  • Kafka — хорошо подходит для потоков событий, высокой пропускной способности и хранения истории сообщений.
  • RabbitMQ — часто используют для классических очередей, маршрутизации и фоновых задач.
  • ActiveMQ / Artemis — встречаются в Java-экосистеме, особенно там, где нужен JMS.
  • JMS — это не брокер, а Java API/стандарт для работы с сообщениями.
  • При выборе системы важно учитывать гарантии доставки, порядок сообщений, масштабирование и тип нагрузки.
  • В микросервисах такие системы помогают строить асинхронную и слабосвязанную архитектуру.