[java] ActiveMQ와 큐 기반 메시지 전송

이번 글에서는 ActiveMQ를 사용하여 큐 기반의 메시지 전송을 어떻게 할 수 있는지 알아보겠습니다. ActiveMQ는 Apache 소프트웨어 재단에서 개발한 오픈 소스 메시징 브로커입니다. 큐 기반 메시지 전송은 메시지를 공유하는 애플리케이션 간의 효율적인 통신을 가능하게 해줍니다.

1. ActiveMQ 설치 및 설정

ActiveMQ를 사용하기 위해서는 먼저 ActiveMQ를 설치하고 설정해야 합니다. 아래의 단계를 따라 진행해주세요.

  1. ActiveMQ 공식 웹사이트에서 ActiveMQ 다운로드 페이지로 이동합니다.
  2. 해당 운영 체제에 맞는 ActiveMQ 설치 파일을 다운로드하고 설치를 진행합니다.
  3. ActiveMQ 실행 후, 웹 기반 관리 콘솔에 접속하기 위해 브라우저에서 http://localhost:8161/admin에 접속합니다.
  4. 콘솔에 로그인하기 위해 기본 로그인 정보를 사용합니다. (아이디: admin, 비밀번호: admin)

2. ActiveMQ 큐 생성

큐를 생성하여 메시지를 보내고 받을 준비를 해보겠습니다. 아래의 단계를 따라 진행해주세요.

  1. ActiveMQ 관리 콘솔에 로그인한 후, 왼쪽 네비게이션 바에서 Queues를 클릭합니다.
  2. Create a new Queue 버튼을 클릭합니다.
  3. 큐 이름을 입력하고, Create 버튼을 클릭하여 큐를 생성합니다.

3. 메시지 보내기

이제 큐를 생성했으므로, 메시지를 보내는 코드를 작성해보겠습니다. 이 예제에서는 Java 언어를 사용합니다.

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;

public class MessageSender {
    public static void main(String[] args) {
        try {
            // Connection Factory 생성
            ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory("tcp://localhost:61616");

            // Connection 생성
            Connection connection = connectionFactory.createConnection();
            connection.start();

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

            // Destination (큐) 설정
            Destination destination = session.createQueue("test.queue");

            // MessageProducer 생성
            MessageProducer producer = session.createProducer(destination);

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

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

            // Cleanup
            session.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위의 Java 코드는 ActiveMQ에 연결하고, 큐를 생성한 뒤 메시지를 보내는 기능을 합니다. 코드를 실행하면 test.queue라는 이름의 큐에 “Hello, ActiveMQ!”라는 메시지가 전송됩니다.

4. 메시지 받기

이번에는 메시지를 받는 코드를 작성해보겠습니다. Java 언어를 사용합니다.

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;

public class MessageReceiver {
    public static void main(String[] args) {
        try {
            // Connection Factory 생성
            ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory("tcp://localhost:61616");

            // Connection 생성
            Connection connection = connectionFactory.createConnection();
            connection.start();

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

            // Destination (큐) 설정
            Destination destination = session.createQueue("test.queue");

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

            // 메시지 수신
            TextMessage message = (TextMessage) consumer.receive();

            // 메시지 출력
            System.out.println("Received message: " + message.getText());

            // Cleanup
            session.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위의 Java 코드는 test.queue 큐에서 메시지를 받아 화면에 출력하는 기능을 합니다. MessageSender 클래스에서 전송한 메시지를 수신하게 됩니다.

5. 결론

ActiveMQ를 사용하면 큐 기반의 메시지 전송을 쉽게 구현할 수 있습니다. 이를 통해 애플리케이션 간에 비동기적으로 메시지를 전달하고 통신할 수 있습니다. ActiveMQ의 다양한 기능과 설정을 살펴보며 메시지 전송에 활용해보세요.