Ответ
Java Message Service (JMS) — это стандартный Java API для асинхронного обмена сообщениями между приложениями или компонентами в рамках enterprise-систем. Он обеспечивает loosely coupled связь через брокеры сообщений.
Основные компоненты JMS:
- ConnectionFactory — фабрика для создания соединений с брокером сообщений (например, ActiveMQ, IBM MQ).
- Connection — активное сетевое соединение с JMS-провайдером.
- Session — однопоточный контекст для создания и потребления сообщений. Может быть транзакционным.
- Destination — адресуемая конечная точка (очередь или топик).
- MessageProducer / MessageConsumer — объекты для отправки и получения сообщений.
- Message — объект, содержащий данные (текст, байты, объекты, мапы, потоки).
Пример отправки сообщения в очередь:
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
try (Connection connection = factory.createConnection()) {
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("ORDERS.QUEUE");
MessageProducer producer = session.createProducer(queue);
TextMessage message = session.createTextMessage("{"orderId": 123}");
producer.send(message);
}
Две основные модели обмена:
- Point-to-Point (Очереди): Сообщение потребляется одним получателем.
- Publish/Subscribe (Топики): Сообщение доставляется всем активным подписчикам. Подписчики могут быть durable для получения сообщений, отправленных в их отсутствие.
Практическое применение: Интеграция микросервисов, отложенная обработка задач, обеспечение надежности и масштабируемости.