[java] JMS를 사용하여 메시지를 다중 프로듀서와 컨슈머 간 공유하는 방법

Java Message Service (JMS)는 Java 애플리케이션에서 메시지 기반 통신을 구현하는 데 사용되는 API입니다. 여러 프로듀서와 컨슈머 간에 메시지를 공유하는 방법을 알아보겠습니다.

1. JMS 메시지 큐 생성하기

먼저, JMS 메시지 큐를 생성해야 합니다. 메시지 큐는 메시지를 보내고 받는 데 사용되는 중간 매개체입니다. JMS 제공 업체에 따라 다양한 방법으로 메시지 큐를 생성할 수 있습니다.

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

// JMS 연결
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();

// JMS 세션 생성
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// JMS 메시지 큐 생성
Queue queue = session.createQueue("myQueue");

2. 프로듀서로 메시지 보내기

이제 메시지를 전송하는 프로듀서를 만들어보겠습니다.

// JMS 메시지 프로듀서 생성
MessageProducer producer = session.createProducer(queue);

// 메시지 생성
TextMessage message = session.createTextMessage("Hello, World!");

// 메시지 전송
producer.send(message);

// 프로듀서 종료
producer.close();

3. 컨슈머로 메시지 받기

이제 메시지를 수신하는 컨슈머를 만들어보겠습니다.

// JMS 메시지 컨슈머 생성
MessageConsumer consumer = session.createConsumer(queue);

// 메시지 수신 대기
Message receivedMessage = consumer.receive();

// 수신된 메시지 처리
if (receivedMessage instanceof TextMessage) {
    TextMessage textMessage = (TextMessage) receivedMessage;
    String messageText = textMessage.getText();
    System.out.println("Received message: " + messageText);
}

// 컨슈머 종료
consumer.close();

4. 다중 프로듀서와 컨슈머 간의 메시지 공유

여러 프로듀서와 컨슈머가 동시에 메시지를 공유하려면 동일한 메시지 큐를 공유해야 합니다. 위에서 생성한 myQueue를 여러 프로듀서와 컨슈머에서 공통으로 사용할 수 있습니다.

다중 프로듀서의 경우 동일한 큐에 다른 세션을 사용하여 여러 메시지를 전송할 수 있습니다. 마찬가지로, 다중 컨슈머는 동일한 큐를 구독하고 메시지를 받을 수 있습니다.

이러한 방식으로 여러 프로듀서와 컨슈머 간에 메시지를 공유할 수 있습니다.

참고 자료