ActiveMQ는 Apache Software Foundation에서 제공하는 오픈 소스 메시지 브로커로, 비동기식 메시지 전송에 사용할 수 있습니다. 이번 포스트에서는 ActiveMQ를 사용하여 Java 언어로 비동기식 메시지를 전송하는 방법을 알아보겠습니다.
1. ActiveMQ 설치 및 설정
ActiveMQ를 사용하기 위해서는 우선 ActiveMQ를 설치해야 합니다. 설치 방법은 공식 홈페이지에서 확인할 수 있습니다.
설치가 완료되면 ActiveMQ 브로커를 시작해야 합니다. 주로 다음과 같은 명령어를 사용하여 브로커를 시작합니다.
$ {ACTIVEMQ_HOME}/bin/activemq start
브로커가 정상적으로 실행되는지 확인하기 위해 웹 브라우저에서 http://localhost:8161에 접속하여 ActiveMQ 관리자 콘솔을 확인할 수 있습니다.
2. Java 코드 작성
메시지를 전송하기 위해 ActiveMQ의 Java API를 사용해야 합니다. Maven 등을 사용하여 ActiveMQ의 라이브러리를 프로젝트에 추가해야 합니다.
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.16.1</version>
</dependency>
아래는 메시지를 전송하는 Java 코드의 예시입니다.
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageProducer {
public static void main(String[] args) {
try {
// ActiveMQ 연결 설정
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
// 세션 생성
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 목적지 설정 (큐 or 토픽)
Destination destination = session.createQueue("myQueue");
// 프로듀서 생성
MessageProducer producer = session.createProducer(destination);
// 메시지 생성
TextMessage message = session.createTextMessage();
message.setText("Hello, ActiveMQ!");
// 메시지 전송
producer.send(message);
// 리소스 해제
producer.close();
session.close();
connection.close();
System.out.println("메시지 전송 완료");
} catch (JMSException e) {
e.printStackTrace();
}
}
}
위의 코드에서는 ActiveMQConnectionFactory
를 사용하여 ActiveMQ에 연결하고, 세션과 목적지를 설정한 후 프로듀서를 생성하여 메시지를 전송합니다.
3. 메시지 수신하기
메시지를 수신하는 코드도 간단합니다. 다음은 메시지를 수신하는 Java 코드의 예시입니다.
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageConsumer {
public static void main(String[] args) {
try {
// ActiveMQ 연결 설정
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
// 세션 생성
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 목적지 설정 (큐 or 토픽)
Destination destination = session.createQueue("myQueue");
// 컨슈머 생성
MessageConsumer consumer = session.createConsumer(destination);
// 메시지 수신
TextMessage message = (TextMessage) consumer.receive();
// 수신한 메시지 처리
System.out.println("수신한 메시지: " + message.getText());
// 리소스 해제
consumer.close();
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
위의 코드에서는 MessageConsumer
를 생성하여 receive()
메서드로 메시지를 수신하고, 수신한 메시지를 처리하는 부분이 추가되었습니다.
결론
이번 포스트에서는 ActiveMQ를 사용하여 Java로 비동기식 메시지를 전송하는 방법을 알아보았습니다. ActiveMQ를 사용하면 메시지 큐를 통해 비동기적으로 메시지를 처리할 수 있어서 시스템의 효율성을 높일 수 있습니다.
더 자세한 내용은 ActiveMQ 공식 문서를 참고하시기 바랍니다.
Happy coding!