[java] ActiveMQ와 큐 기반 메시지 전송
이번 글에서는 ActiveMQ를 사용하여 큐 기반의 메시지 전송을 어떻게 할 수 있는지 알아보겠습니다. ActiveMQ는 Apache 소프트웨어 재단에서 개발한 오픈 소스 메시징 브로커입니다. 큐 기반 메시지 전송은 메시지를 공유하는 애플리케이션 간의 효율적인 통신을 가능하게 해줍니다.
1. ActiveMQ 설치 및 설정
ActiveMQ를 사용하기 위해서는 먼저 ActiveMQ를 설치하고 설정해야 합니다. 아래의 단계를 따라 진행해주세요.
- ActiveMQ 공식 웹사이트에서 ActiveMQ 다운로드 페이지로 이동합니다.
- 해당 운영 체제에 맞는 ActiveMQ 설치 파일을 다운로드하고 설치를 진행합니다.
- ActiveMQ 실행 후, 웹 기반 관리 콘솔에 접속하기 위해 브라우저에서
http://localhost:8161/admin
에 접속합니다. - 콘솔에 로그인하기 위해 기본 로그인 정보를 사용합니다. (아이디:
admin
, 비밀번호:admin
)
2. ActiveMQ 큐 생성
큐를 생성하여 메시지를 보내고 받을 준비를 해보겠습니다. 아래의 단계를 따라 진행해주세요.
- ActiveMQ 관리 콘솔에 로그인한 후, 왼쪽 네비게이션 바에서
Queues
를 클릭합니다. Create a new Queue
버튼을 클릭합니다.- 큐 이름을 입력하고,
Create
버튼을 클릭하여 큐를 생성합니다.
3. 메시지 보내기
이제 큐를 생성했으므로, 메시지를 보내는 코드를 작성해보겠습니다. 이 예제에서는 Java 언어를 사용합니다.
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageSender {
public static void main(String[] args) {
try {
// Connection Factory 생성
ConnectionFactory connectionFactory =
new ActiveMQConnectionFactory("tcp://localhost:61616");
// Connection 생성
Connection connection = connectionFactory.createConnection();
connection.start();
// Session 생성
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Destination (큐) 설정
Destination destination = session.createQueue("test.queue");
// MessageProducer 생성
MessageProducer producer = session.createProducer(destination);
// 메시지 생성
TextMessage message = session.createTextMessage("Hello, ActiveMQ!");
// 메시지 전송
producer.send(message);
// Cleanup
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
위의 Java 코드는 ActiveMQ에 연결하고, 큐를 생성한 뒤 메시지를 보내는 기능을 합니다. 코드를 실행하면 test.queue
라는 이름의 큐에 “Hello, ActiveMQ!”라는 메시지가 전송됩니다.
4. 메시지 받기
이번에는 메시지를 받는 코드를 작성해보겠습니다. Java 언어를 사용합니다.
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageReceiver {
public static void main(String[] args) {
try {
// Connection Factory 생성
ConnectionFactory connectionFactory =
new ActiveMQConnectionFactory("tcp://localhost:61616");
// Connection 생성
Connection connection = connectionFactory.createConnection();
connection.start();
// Session 생성
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Destination (큐) 설정
Destination destination = session.createQueue("test.queue");
// MessageConsumer 생성
MessageConsumer consumer = session.createConsumer(destination);
// 메시지 수신
TextMessage message = (TextMessage) consumer.receive();
// 메시지 출력
System.out.println("Received message: " + message.getText());
// Cleanup
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
위의 Java 코드는 test.queue
큐에서 메시지를 받아 화면에 출력하는 기능을 합니다. MessageSender
클래스에서 전송한 메시지를 수신하게 됩니다.
5. 결론
ActiveMQ를 사용하면 큐 기반의 메시지 전송을 쉽게 구현할 수 있습니다. 이를 통해 애플리케이션 간에 비동기적으로 메시지를 전달하고 통신할 수 있습니다. ActiveMQ의 다양한 기능과 설정을 살펴보며 메시지 전송에 활용해보세요.