[java] Apache ActiveMQ를 이용한 메시지 송수신 방법

Apache ActiveMQ는 대표적인 오픈소스 메시징 시스템으로, 메시지 기반 송수신을 위한 다양한 기능을 제공합니다. 이번 포스트에서는 ActiveMQ를 활용하여 메시지를 송신하고 수신하는 방법에 대해 알아보겠습니다.

1. ActiveMQ 설치 및 설정

ActiveMQ를 사용하기 위해선 먼저 설치가 필요합니다. 아래는 설치 및 설정하는 방법입니다.

  1. ActiveMQ 공식 웹사이트에서 ActiveMQ를 다운로드하고 설치합니다.
  2. ActiveMQ 설치 디렉토리로 이동하여 ActiveMQ 실행 스크립트를 실행합니다.
    $ cd <activemq_install_dir>/bin
    $ ./activemq start
    
  3. 브라우저를 열고 http://localhost:8161에 접속하여 ActiveMQ 관리 콘솔에 로그인합니다. (기본 계정은 admin/admin입니다)
  4. ActiveMQ 설정 파일을 수정하여 필요한 설정을 변경할 수 있습니다. (<activemq_install_dir>/conf/activemq.xml)

2. 메시지 송신하기

Java 언어를 사용하여 ActiveMQ로 메시지를 송신하는 방법은 다음과 같습니다.

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

public class MessageSender {

    private static String brokerURL = "tcp://localhost:61616";
    private static String queueName = "messageQueue";
    
    public static void main(String[] args) {
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
        
        try {
            Connection connection = connectionFactory.createConnection();
            connection.start();
            
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Destination destination = session.createQueue(queueName);
            
            MessageProducer messageProducer = session.createProducer(destination);
            TextMessage message = session.createTextMessage();
            message.setText("Hello, ActiveMQ!");
            
            messageProducer.send(message);
            
            connection.close();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드는 ActiveMQ로 텍스트 메시지를 송신하는 간단한 Java 프로그램입니다. brokerURL은 ActiveMQ 브로커의 주소를, queueName은 메시지를 전송할 대상 큐의 이름을 나타냅니다.

3. 메시지 수신하기

Java 언어를 사용하여 ActiveMQ에서 메시지를 수신하는 방법은 다음과 같습니다.

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

public class MessageReceiver implements MessageListener {

    private static String brokerURL = "tcp://localhost:61616";
    private static String queueName = "messageQueue";

    public static void main(String[] args) {
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);

        try {
            Connection connection = connectionFactory.createConnection();
            connection.start();

            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Destination destination = session.createQueue(queueName);

            MessageConsumer messageConsumer = session.createConsumer(destination);
            messageConsumer.setMessageListener(new MessageReceiver());

            System.out.println("Listening for messages...");

            // 메시지를 수신하기 위해 프로그램을 종료시키지 않고 대기합니다.
            while (true) {
                Thread.sleep(1000);
            }
        } catch (JMSException | InterruptedException e) {
            e.printStackTrace();
        }
    }

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

위의 예제 코드는 ActiveMQ에서 텍스트 메시지를 수신하는 간단한 Java 프로그램입니다. brokerURL은 ActiveMQ 브로커의 주소를, queueName은 메시지를 수신할 대상 큐의 이름을 나타냅니다. onMessage 메서드는 MessageListener 인터페이스를 구현하여 메시지 수신시 호출되는 콜백 메서드입니다.

결론

위의 방법을 사용하여 Apache ActiveMQ를 활용하여 메시지를 송수신할 수 있습니다. 메시징 시스템은 분산 환경에서 효율적인 통신을 달성하는데 매우 유용하며, 다양한 애플리케이션 간의 통합에 활용될 수 있습니다.

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

”-“