[java] Apache ActiveMQ와 웹 애플리케이션의 통합

Apache ActiveMQ는 강력한 오픈 소스 메시징 브로커로서, 다양한 프로토콜을 지원하여 메시징 시스템의 효율성과 신뢰성을 향상시킵니다. 이러한 ActiveMQ를 웹 애플리케이션과 통합하여 메시지 전송 및 수신 기능을 구현할 수 있습니다.

이 블로그 포스트에서는 Apache ActiveMQ를 사용하여 웹 애플리케이션과 통합하는 방법에 대해 알아보겠습니다.

1. Apache ActiveMQ 설치 및 설정

먼저, Apache ActiveMQ를 설치하고 설정해야 합니다. ActiveMQ의 공식 웹 사이트에서 최신 버전을 다운로드하고, 설치 및 실행하는 방법을 확인할 수 있습니다. 설치가 완료되면 ActiveMQ의 관리자 콘솔에 액세스하여 큐나 토픽을 설정할 수 있습니다.

2. 웹 애플리케이션에 ActiveMQ 의존성 추가

웹 애플리케이션에서 ActiveMQ를 사용하려면 먼저 의존성을 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 종속성을 추가하면 됩니다.

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

Gradle을 사용하는 경우, build.gradle 파일에 다음 종속성을 추가하면 됩니다.

dependencies {
    implementation 'org.apache.activemq:activemq-all:5.16.2'
}

3. 메시지 송수신 구현

웹 애플리케이션에서 ActiveMQ를 사용하여 메시지를 송수신하려면 다음과 같은 단계를 따릅니다.

송신자(Producer) 구현

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

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

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

        // 보내고자 하는 큐 설정
        Queue queue = session.createQueue("myQueue");

        // 메시지 송신자 생성
        MessageProducer producer = session.createProducer(queue);

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

        // 리소스 정리
        producer.close();
        session.close();
        connection.close();
    }
}

수신자(Consumer) 구현

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class MessageConsumer {
    public static void main(String[] args) throws JMSException {
        // ActiveMQ 연결 설정
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        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());
        } else {
            System.out.println("Received unknown message type");
        }

        // 리소스 정리
        consumer.close();
        session.close();
        connection.close();
    }
}

위의 예제에서는 ActiveMQ에 연결하고, 송신자는 myQueue라는 큐에 메시지를 보내고, 수신자는 동일한 큐에서 메시지를 수신합니다.

마무리

이렇게 하면 Apache ActiveMQ와 웹 애플리케이션을 통합하여 메시지 송수신 기능을 구현할 수 있습니다. 이를 통해 메시징 시스템을 사용하여 애플리케이션 간 통신을 효율적으로 처리할 수 있습니다.

더 자세한 내용은 Apache ActiveMQ 공식 문서를 참조하세요.