[java] Java에서 Apache ActiveMQ 사용하기

Apache ActiveMQ는 가장 인기 있는 오픈 소스 메시징 시스템 중 하나입니다. 이 글에서는 Java 언어를 사용하여 Apache ActiveMQ를 사용하는 방법에 대해 알아보겠습니다.

1. 의존성 추가하기

먼저, ActiveMQ를 사용하기 위해 프로젝트의 의존성에 ActiveMQ 라이브러리를 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 내용을 추가합니다:

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.16.3</version>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음 내용을 추가합니다:

implementation 'org.apache.activemq:activemq-all:5.16.3'

라이브러리를 추가한 후 프로젝트를 다시 빌드해야 합니다.

2. ActiveMQ 연결 설정하기

ActiveMQ 브로커에 연결하기 위해 ActiveMQConnectionFactory를 사용합니다. 다음은 연결 설정 예입니다:

import org.apache.activemq.ActiveMQConnectionFactory;

String brokerUrl = "tcp://localhost:61616";
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
Connection connection = connectionFactory.createConnection();

위 코드에서 brokerUrl은 ActiveMQ 브로커의 URL입니다. 브로커가 동일한 컴퓨터에 설치되어 있다면 localhost를 사용합니다. 위 코드가 실행되면 ActiveMQ 브로커에 대한 연결이 생성됩니다.

3. 큐에 메시지 보내기

메시지를 보내기 위해 ActiveMQ의 QueueSender를 사용합니다. 다음은 메시지를 큐에 보내는 예입니다:

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

String queueName = "myQueue";
Destination destination = session.createQueue(queueName);
MessageProducer producer = session.createProducer(destination);
TextMessage message = session.createTextMessage("Hello, ActiveMQ!");
producer.send(message);

위 코드에서 queueName은 메시지를 보낼 큐의 이름입니다. createTextMessage 메서드는 보내고자하는 메시지 내용을 포함하는 TextMessage 객체를 생성합니다. send 메서드를 호출하여 메시지를 보냅니다.

4. 큐에서 메시지 받기

메시지를 받기 위해서는 QueueReceiver를 사용합니다. 다음은 큐에서 메시지를 받는 예입니다:

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

String queueName = "myQueue";
Destination destination = session.createQueue(queueName);
MessageConsumer consumer = session.createConsumer(destination);
Message message = consumer.receive();
if (message instanceof TextMessage) {
    TextMessage textMessage = (TextMessage) message;
    String text = textMessage.getText();
    System.out.println("Received message: " + text);
}

위 코드에서 메시지를 받기 위해 receive 메서드를 호출합니다. 이 메서드는 블로킹 메서드로, 메시지가 도착할 때까지 대기합니다. receive 메서드를 호출한 후 받은 메시지의 타입을 확인하고, getText 메서드를 통해 메시지 내용을 읽을 수 있습니다.

결론

이제 Java에서 Apache ActiveMQ를 사용하여 메시징 시스템을 구축하는 방법을 알게 되었습니다. ActiveMQ를 사용하면 애플리케이션 간에 비동기적으로 데이터를 교환할 수 있으며, 메시지 큐를 사용하여 신뢰성과 확장성을 높일 수 있습니다.

더 자세한 내용은 Apache ActiveMQ 공식 문서를 참조하시기 바랍니다.