Ответ
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) для высокой доступности и балансировки нагрузки.
- Отложенная доставка: Возможность отправки сообщений с задержкой.