[java] ActiveMQ와 메시지 리스너 등록

이번 포스트에서는 ActiveMQ를 사용하여 메시지 리스너를 등록하는 방법에 대해 알아보겠습니다. ActiveMQ는 자바 기반의 오픈 소스 메시징 브로커로, 메시지 기반 응용 프로그램을 구축할 때 많이 사용됩니다.

ActiveMQ 설치 및 설정하기

ActiveMQ를 사용하기 위해서는 먼저 설치와 설정을 진행해야 합니다. 아래는 간단한 설정 방법입니다.

  1. ActiveMQ를 공식 웹사이트에서 다운로드합니다.
  2. 압축 파일을 추출하여 원하는 디렉토리에 설치합니다.
  3. ActiveMQ 서버를 실행하기 위해 설치된 디렉토리로 이동합니다.
  4. 터미널에서 ./bin/activemq start 명령을 실행하여 서버를 시작합니다.

메시지 리스너 등록하기

ActiveMQ에서 메시지를 수신하려면 메시지 리스너를 등록해야 합니다. 메시지 리스너는 메시지가 도착했을 때 실행되는 콜백 함수로, 원하는 작업을 수행할 수 있도록 해줍니다.

아래는 메시지 리스너를 등록하는 예시 코드입니다.

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

public class MessageListenerExample implements MessageListener {

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

        // ConnectionFactory를 사용하여 Connection 생성
        Connection connection = connectionFactory.createConnection();
        connection.start();

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

        // 수신할 메시지를 받을 Queue 생성
        javax.jms.Queue queue = session.createQueue("MY_QUEUE");

        // Queue로부터 메시지를 수신할 MessageConsumer 생성
        MessageConsumer consumer = session.createConsumer(queue);

        // MessageListener 등록
        consumer.setMessageListener(new MessageListenerExample());

        // 무한 대기
        while (true) {
            Thread.sleep(1000);
        }

        // 연결 종료
        session.close();
        connection.close();
    }

    @Override
    public void onMessage(Message message) {
        try {
            if (message instanceof TextMessage) {
                TextMessage textMessage = (TextMessage) message;
                String messageText = textMessage.getText();
                System.out.println("Received message: " + messageText);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 ActiveMQ의 ConnectionFactory를 사용하여 Connection을 생성하고, Connection에서 Session을 생성합니다. 그 후에는 수신할 메시지를 받을 Queue를 생성하고, Queue로부터 메시지를 수신할 MessageConsumer를 생성합니다.

마지막으로 consumer.setMessageListener(new MessageListenerExample()); 코드에서는 메시지 리스너를 등록하고 있습니다. onMessage 메소드에서는 실제 메시지가 도착했을 때 실행될 콜백 로직을 작성하면 됩니다.

이제 ActiveMQ를 사용하여 메시지 리스너를 등록하는 방법에 대해 알아보았습니다. ActiveMQ는 강력한 메시징 솔루션이며, 다른 응용 프로그램 간의 통신과 이벤트 기반 아키텍처에서 유용하게 사용될 수 있습니다. 추후 포스트에서는 ActiveMQ의 더 많은 기능과 활용 방법에 대해 다룰 예정입니다.