Что такое Apache ActiveMQ и для чего он используется?

«Что такое Apache ActiveMQ и для чего он используется?» — вопрос из категории Брокеры сообщений, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Apache ActiveMQ — это открытый, многопротокольный брокер сообщений, реализующий стандарт JMS (Java Message Service). Он служит для асинхронного обмена сообщениями между распределенными компонентами системы.

Основные сценарии использования:

  • Асинхронная коммуникация: Развязка отправителя и получателя сообщений во времени.
  • Интеграция микросервисов: Передача событий и команд между сервисами.
  • Очереди задач (Task Queues): Распределение фоновых задач между несколькими воркерами.
  • Публикация/Подписка (Pub/Sub): Широковещательная рассылка событий множеству подписчиков.

Пример отправки сообщения в очередь (JMS 1.1):

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

// 1. Создание фабрики соединений
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");

// 2. Установка соединения и запуск
Connection connection = connectionFactory.createConnection();
connection.start();

// 3. Создание сессии
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// 4. Создание целевой очереди
Destination destination = session.createQueue("ORDER.QUEUE");

// 5. Создание отправителя
MessageProducer producer = session.createProducer(destination);

// 6. Создание и отправка текстового сообщения
TextMessage message = session.createTextMessage("New order #12345");
producer.send(message);

// 7. Закрытие ресурсов
session.close();
connection.close();

Ключевые возможности ActiveMQ:

  • Модели обмена: Очереди (Point-to-Point) и топики (Publish/Subscribe).
  • Гарантии доставки: Поддержка персистентных (durable) сообщений и транзакций.
  • Протоколы: Поддержка не только JMS, но и STOMP, AMQP, MQTT.
  • Кластеризация: Настройка мастер/слейв или сетевых мостов (network of brokers) для высокой доступности и балансировки нагрузки.
  • Отложенная доставка: Возможность отправки сообщений с задержкой.