[java] Apache ActiveMQ와 Docker 컨테이너의 연동

Apache ActiveMQ는 인기있는 오픈 소스 메시징 브로커로, 대용량의 메시징 시스템과 애플리케이션 간에 신뢰성 높은 메시지 전달을 지원합니다. Docker는 컨테이너화된 애플리케이션의 배포와 실행을 위한 플랫폼으로, 메시징 시스템과의 연동에도 많이 사용됩니다.

이번 글에서는 Apache ActiveMQ와 Docker 컨테이너를 연동하는 방법을 알아보겠습니다.

1. Docker를 설치하고 실행하기

먼저 Docker를 설치하고 실행해야 합니다. Docker는 공식 웹사이트에서 제공하는 설치 패키지를 사용하여 설치할 수 있습니다. 설치 후 Docker 데몬이 실행되고 있는지 확인해야 합니다.

2. Apache ActiveMQ 이미지 다운로드하기

Docker 컨테이너에 Apache ActiveMQ를 실행하기 위해 먼저 ActiveMQ 이미지를 다운로드해야 합니다. Docker Hub에서 제공하는 공식 이미지를 사용할 수 있습니다. 다음 명령을 사용하여 이미지를 다운로드합니다:

docker pull activemq

3. Apache ActiveMQ 컨테이너 실행하기

이제 다운로드한 Apache ActiveMQ 이미지를 기반으로 Docker 컨테이너를 실행할 수 있습니다. 다음 명령을 사용하여 컨테이너를 실행합니다:

docker run -d --name activemq -p 61616:61616 -p 8161:8161 activemq

이 명령은 activemq라는 이름으로 컨테이너를 실행하며, 호스트의 61616 포트와 8161 포트를 컨테이너의 61616 포트와 8161 포트로 매핑합니다. 이렇게 함으로써 ActiveMQ에 접근할 수 있게 됩니다.

4. ActiveMQ 관리 콘솔 접속하기

Apache ActiveMQ는 웹 기반의 관리 콘솔을 제공합니다. 이를 통해 큐와 토픽을 생성하고 모니터링 할 수 있습니다. 브라우저에서 http://localhost:8161/admin 주소로 접속하면 관리 콘솔에 접근할 수 있습니다.

5. Java 애플리케이션과 연동하기

Java 애플리케이션에서 Apache ActiveMQ와 연동하려면 ActiveMQ 라이브러리를 사용해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가합니다:

<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-all</artifactId>
  <version>${activemq.version}</version>
</dependency>

Java 코드에서는 ActiveMQ 연결을 생성하고 메시지를 보내고 받는 등의 작업을 수행할 수 있습니다. 아래는 간단한 예제 코드입니다:

import org.apache.activemq.*;

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

            // 메시지 송수신 작업 수행

            // 연결 종료
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 tcp://localhost:61616 주소를 사용하여 ActiveMQ에 연결합니다. 실제 애플리케이션에서는 이 주소를 ActiveMQ 호스트와 포트에 맞게 변경해야 합니다.

이제 Java 애플리케이션은 Apache ActiveMQ와 연동되어 메시지를 전달하고 받을 수 있게 됩니다.

결론

이번 글에서는 Apache ActiveMQ와 Docker 컨테이너의 연동 방법에 대해 알아보았습니다. Docker를 사용하여 ActiveMQ를 실행하고 Java 애플리케이션에서 ActiveMQ와 통신하는 방법을 확인할 수 있었습니다.