[java] ActiveMQ를 사용한 비동기식 메시지 전송

ActiveMQ는 Apache Software Foundation에서 제공하는 오픈 소스 메시지 브로커로, 비동기식 메시지 전송에 사용할 수 있습니다. 이번 포스트에서는 ActiveMQ를 사용하여 Java 언어로 비동기식 메시지를 전송하는 방법을 알아보겠습니다.

1. ActiveMQ 설치 및 설정

ActiveMQ를 사용하기 위해서는 우선 ActiveMQ를 설치해야 합니다. 설치 방법은 공식 홈페이지에서 확인할 수 있습니다.

설치가 완료되면 ActiveMQ 브로커를 시작해야 합니다. 주로 다음과 같은 명령어를 사용하여 브로커를 시작합니다.

$ {ACTIVEMQ_HOME}/bin/activemq start

브로커가 정상적으로 실행되는지 확인하기 위해 웹 브라우저에서 http://localhost:8161에 접속하여 ActiveMQ 관리자 콘솔을 확인할 수 있습니다.

2. Java 코드 작성

메시지를 전송하기 위해 ActiveMQ의 Java API를 사용해야 합니다. Maven 등을 사용하여 ActiveMQ의 라이브러리를 프로젝트에 추가해야 합니다.

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

아래는 메시지를 전송하는 Java 코드의 예시입니다.

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

public class MessageProducer {
    public static void main(String[] args) {
        try {
            // ActiveMQ 연결 설정
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
            Connection connection = connectionFactory.createConnection();
            connection.start();

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

            // 목적지 설정 (큐 or 토픽)
            Destination destination = session.createQueue("myQueue");

            // 프로듀서 생성
            MessageProducer producer = session.createProducer(destination);

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

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

            // 리소스 해제
            producer.close();
            session.close();
            connection.close();

            System.out.println("메시지 전송 완료");
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 ActiveMQConnectionFactory를 사용하여 ActiveMQ에 연결하고, 세션과 목적지를 설정한 후 프로듀서를 생성하여 메시지를 전송합니다.

3. 메시지 수신하기

메시지를 수신하는 코드도 간단합니다. 다음은 메시지를 수신하는 Java 코드의 예시입니다.

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

public class MessageConsumer {
    public static void main(String[] args) {
        try {
            // ActiveMQ 연결 설정
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
            Connection connection = connectionFactory.createConnection();
            connection.start();

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

            // 목적지 설정 (큐 or 토픽)
            Destination destination = session.createQueue("myQueue");

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

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

            // 수신한 메시지 처리
            System.out.println("수신한 메시지: " + message.getText());

            // 리소스 해제
            consumer.close();
            session.close();
            connection.close();

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

위의 코드에서는 MessageConsumer를 생성하여 receive() 메서드로 메시지를 수신하고, 수신한 메시지를 처리하는 부분이 추가되었습니다.

결론

이번 포스트에서는 ActiveMQ를 사용하여 Java로 비동기식 메시지를 전송하는 방법을 알아보았습니다. ActiveMQ를 사용하면 메시지 큐를 통해 비동기적으로 메시지를 처리할 수 있어서 시스템의 효율성을 높일 수 있습니다.

더 자세한 내용은 ActiveMQ 공식 문서를 참고하시기 바랍니다.

Happy coding!