Что такое Java Message Service (JMS) и каковы его основные компоненты?

«Что такое Java Message Service (JMS) и каковы его основные компоненты?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Java Message Service (JMS) — это стандартный Java API для асинхронного обмена сообщениями между приложениями или компонентами в рамках enterprise-систем. Он обеспечивает loosely coupled связь через брокеры сообщений.

Основные компоненты JMS:

  1. ConnectionFactory — фабрика для создания соединений с брокером сообщений (например, ActiveMQ, IBM MQ).
  2. Connection — активное сетевое соединение с JMS-провайдером.
  3. Session — однопоточный контекст для создания и потребления сообщений. Может быть транзакционным.
  4. Destination — адресуемая конечная точка (очередь или топик).
  5. MessageProducer / MessageConsumer — объекты для отправки и получения сообщений.
  6. 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 для получения сообщений, отправленных в их отсутствие.

Практическое применение: Интеграция микросервисов, отложенная обработка задач, обеспечение надежности и масштабируемости.