[java] JMS에서 지원하는 메시지 큐의 생성과 사용 방법

Java Message Service (JMS)는 자바 애플리케이션 간에 비동기식 통신을 제공하는 API입니다. JMS를 사용하여 메시지 큐를 생성하고 사용하는 방법에 대해 알아보겠습니다.

1. JMS 구현체 선택

JMS의 구현체로는 Apache ActiveMQ, IBM MQ 등이 있습니다. 이 예시에서는 Apache ActiveMQ를 사용합니다.

2. Maven 의존성 추가

먼저 Maven 프로젝트의 pom.xml 파일에 다음 의존성을 추가해야 합니다.

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.16.3</version>
</dependency>

3. 메시지 큐 생성하기

메시지 큐를 생성하려면 QueueConnectionFactory, Queue 객체가 필요합니다. 다음 코드는 ActiveMQ를 사용하여 메시지 큐를 생성하는 예시입니다.

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

public class MessageQueueCreator {

    public static void main(String[] args) {
        // ActiveMQ에 연결하기 위한 ConnectionFactory 생성
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");

        try {
            // ConnectionFactory를 사용하여 Connection 생성
            Connection connection = connectionFactory.createConnection();
            
            // Connection 시작
            connection.start();
            
            // Session 생성
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            
            // 큐 생성
            Queue queue = session.createQueue("myQueue");
            
            System.out.println("메시지 큐 'myQueue'가 성공적으로 생성되었습니다.");

            // 세션과 커넥션 종료
            session.close();
            connection.close();

        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

4. 메시지 큐 사용하기

메시지 큐에 메시지를 보내고 받기 위해서는 ProducerConsumer 객체가 필요합니다. 다음 코드는 메시지 큐에 메시지를 보내고 받는 예시입니다.

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

public class MessageQueueExample {

    public static void main(String[] args) {
        // ActiveMQ에 연결하기 위한 ConnectionFactory 생성
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");

        try {
            // ConnectionFactory를 사용하여 Connection 생성
            Connection connection = connectionFactory.createConnection();
            
            // Connection 시작
            connection.start();
            
            // Session 생성
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            
            // 큐 생성
            Queue queue = session.createQueue("myQueue");
            
            // MessageProducer 생성
            MessageProducer producer = session.createProducer(queue);

            // Message 생성 및 전송
            TextMessage message = session.createTextMessage();
            message.setText("Hello, JMS!");
            producer.send(message);
            
            System.out.println("메시지 전송이 완료되었습니다.");

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

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

            // 세션과 커넥션 종료
            session.close();
            connection.close();

        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

위 예시 코드를 실행하면 JMS를 사용하여 메시지 큐를 생성하고 메시지를 보내고 받을 수 있습니다.

이 예시는 JMS의 기본적인 사용 방법을 보여줍니다. JMS는 더 많은 기능을 제공하며, JMS의 문서를 참조하여 더 자세한 내용을 알아보시기를 권장합니다.