SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Веб-разработка

ActiveMQ и Java: очередь, producer и подтверждение обработки

Apache ActiveMQ — брокер сообщений. Приложение-производитель отправляет сообщение брокеру, а потребитель получает его из очереди. В модели publish/subscribe используется topic: это другая схема доставки, её нельзя подменять обычной очередью.

Подготовка Java-клиента

Сначала выберите ActiveMQ Classic или Artemis и совместимый клиент. Для примера с Classic и JMS 1.1 используются пакеты javax.jms и org.apache.activemq.ActiveMQConnectionFactory. Зависимости клиента и пространство имён javax/jakarta должны соответствовать вашей версии.

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

ConnectionFactory factory =
    new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = factory.createConnection();
try {
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    try {
        Queue queue = session.createQueue("orders.demo");
        javax.jms.MessageProducer producer = session.createProducer(queue);
        producer.setDeliveryMode(DeliveryMode.PERSISTENT);
        producer.send(session.createTextMessage("demo-order-1"));
        producer.close();
    } finally {
        session.close();
    }
} finally {
    connection.close();
}

Это локальный учебный producer, а не конфигурация публичного брокера. Для удалённого подключения нужны соответствующие аутентификация, TLS и сетевые ограничения.

Почему нельзя обещать отсутствие потерь

Доставка зависит от persistence, хранилища брокера, подтверждений и поведения клиента при сбое. Возможна повторная доставка: обработчик должен учитывать дубликаты. AUTO_ACKNOWLEDGE относится к сессии потребителя и не превращает отправку в сквозную транзакцию с вашей базой.

Проверьте отправку и получение тестового ID, перезапуск брокера и повтор обработки. AMQP, MQTT и OpenWire — варианты протоколов; поддержку и параметры выбирайте по документации конкретного брокера, а не по общему названию ActiveMQ.

Документация