이번 포스트에서는 ActiveMQ를 사용하여 메시지 리스너를 등록하는 방법에 대해 알아보겠습니다. ActiveMQ는 자바 기반의 오픈 소스 메시징 브로커로, 메시지 기반 응용 프로그램을 구축할 때 많이 사용됩니다.
ActiveMQ 설치 및 설정하기
ActiveMQ를 사용하기 위해서는 먼저 설치와 설정을 진행해야 합니다. 아래는 간단한 설정 방법입니다.
- ActiveMQ를 공식 웹사이트에서 다운로드합니다.
- 압축 파일을 추출하여 원하는 디렉토리에 설치합니다.
- ActiveMQ 서버를 실행하기 위해 설치된 디렉토리로 이동합니다.
- 터미널에서
./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의 더 많은 기능과 활용 방법에 대해 다룰 예정입니다.