[java] JMS를 사용하여 큐잉 메시지 패턴 구현 방법

Java Message Service (JMS)는 Java 언어를 사용하여 메시지 기반 애플리케이션을 개발하기 위한 API입니다. JMS를 사용하면 프로듀서(메시지 생성자)와 컨슈머(메시지 소비자) 간에 비동기적으로 메시지를 교환할 수 있습니다. 이러한 기능을 통해 큐잉 메시지 패턴을 구현할 수 있습니다.

JMS 구성 요소

JMS는 큐(Queue)와 토픽(Topic) 두 가지 주요 구성 요소를 제공합니다.

JMS 메시지 생성

JMS 메시지는 javax.jms.Message 인터페이스를 구현하는 객체입니다. 일반적으로는 javax.jms.TextMessage 클래스를 사용하여 텍스트 기반의 메시지를 생성합니다.

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

// 메시지 생성 및 전송 코드
public class MessageProducer {
    public static void main(String[] args) {
        try {
            // JMS 연결
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
            Connection connection = connectionFactory.createConnection();
            connection.start();

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

            // 큐 생성
            Queue queue = session.createQueue("myQueue");

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

            // 메시지 전송
            MessageProducer producer = session.createProducer(queue);
            producer.send(message);

            // 리소스 정리
            session.close();
            connection.close();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서는 ActiveMQConnectionFactory 클래스를 사용하여 JMS 연결을 설정하고, 세션을 생성한 후, 큐를 생성합니다. 그리고 메시지를 생성하고 전송하는 코드를 작성합니다.

JMS 메시지 수신

JMS 메시지를 수신하기 위해서는 컨슈머를 생성하고 큐에서 메시지를 수신해야 합니다.

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

// 메시지 수신 코드
public class MessageConsumer {
    public static void main(String[] args) {
        try {
            // JMS 연결
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
            Connection connection = connectionFactory.createConnection();
            connection.start();

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

            // 큐 생성
            Queue queue = session.createQueue("myQueue");

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

            // 메시지 수신
            Message message = consumer.receive();
            if (message instanceof TextMessage) {
                TextMessage textMessage = (TextMessage) message;
                System.out.println("Received message: " + textMessage.getText());
            }

            // 리소스 정리
            session.close();
            connection.close();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서는 ActiveMQConnectionFactory 클래스를 사용하여 JMS 연결을 설정하고, 세션을 생성한 후, 큐를 생성합니다. 그리고 컨슈머를 생성하고 메시지를 수신하여 처리하는 코드를 작성합니다.

결론

JMS를 사용하여 큐잉 메시지 패턴을 구현할 수 있습니다. 메시지 생성자와 소비자가 비동기적으로 메시지를 교환하여 속도와 확장성을 향상시킬 수 있습니다. JMS는 메시지를 안정적으로 전달하는 모델을 제공하므로, 신뢰성 있는 애플리케이션 개발을 위해 활용할 수 있습니다.

참고 자료