[java] Apache ActiveMQ를 이용한 비동기 처리 구현 방법
Apache ActiveMQ는 오픈 소스 메시징 솔루션으로, 다양한 플랫폼 간에 메시지를 교환하고 비동기 처리를 구현하는 데 사용됩니다. 이번 글에서는 Java 언어를 사용하여 Apache ActiveMQ를 이용한 비동기 처리를 구현하는 방법을 알아보겠습니다.
1. Apache ActiveMQ 설치 및 설정
- Apache ActiveMQ를 공식 웹사이트에서 다운로드하고 설치합니다.
- ActiveMQ 설치 디렉토리로 이동하고
bin
폴더 안에 있는activemq start
명령을 실행하여 ActiveMQ 브로커를 시작합니다. - 브라우저에서
http://localhost:8161/admin
에 접속하여 ActiveMQ 관리 콘솔에 로그인합니다. 기본 ID와 비밀번호는admin/admin
입니다. - 관리 콘솔에서 “Destinations” 메뉴로 이동하고, “Add Queue” 버튼을 클릭하여 메시지 큐를 생성합니다. 큐의 이름은 자유롭게 지정할 수 있습니다.
2. Java 프로젝트 설정
- Java 프로젝트에 ActiveMQ의 Java 클라이언트 라이브러리를 추가합니다. Maven을 사용한다면
pom.xml
파일에 다음 의존성을 추가합니다:
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.16.2</version>
</dependency>
</dependencies>
- Java 코드에서 ActiveMQ를 사용할 준비를 합니다. 다음은 Producer와 Consumer를 작성하는 예제입니다:
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class ActiveMQExample {
public static void main(String[] args) {
try {
// ActiveMQ 연결 설정
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
// Producer: 메시지 전송
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue destination = session.createQueue("example.queue");
MessageProducer producer = session.createProducer(destination);
TextMessage message = session.createTextMessage();
message.setText("Hello, ActiveMQ!");
producer.send(message);
// Consumer: 메시지 수신
MessageConsumer consumer = session.createConsumer(destination);
Message receivedMessage = consumer.receive();
if (receivedMessage instanceof TextMessage) {
TextMessage textMessage = (TextMessage) receivedMessage;
System.out.println("Received message: " + textMessage.getText());
}
// 연결 종료
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
위 코드에서 tcp://localhost:61616
는 ActiveMQ 브로커의 주소를 나타냅니다. 만약 호스트와 포트 번호가 다르다면 해당 정보로 변경해야 합니다.
3. 실행 및 결과 확인
위의 예제 코드를 실행하면 Producer가 “Hello, ActiveMQ!”라는 메시지를 큐에 보내고, Consumer가 해당 메시지를 수신하여 콘솔에 출력합니다. ActiveMQ 관리 콘솔에서도 메시지 큐의 상태를 확인할 수 있습니다.
결론
Apache ActiveMQ를 사용하면 메시지 큐를 통해 비동기 처리를 간단하게 구현할 수 있습니다. 프로듀서로 메시지를 전송하고, 컨슈머에서 해당 메시지를 받아 처리하는 방식을 사용하면, 시스템 간의 통신 및 비동기 작업 처리에 유용합니다.