[java] JMS를 사용하여 메시지를 다중 프로듀서와 컨슈머 간 공유하는 방법
Java Message Service (JMS)는 Java 애플리케이션에서 메시지 기반 통신을 구현하는 데 사용되는 API입니다. 여러 프로듀서와 컨슈머 간에 메시지를 공유하는 방법을 알아보겠습니다.
1. JMS 메시지 큐 생성하기
먼저, JMS 메시지 큐를 생성해야 합니다. 메시지 큐는 메시지를 보내고 받는 데 사용되는 중간 매개체입니다. JMS 제공 업체에 따라 다양한 방법으로 메시지 큐를 생성할 수 있습니다.
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
// JMS 연결
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
// JMS 세션 생성
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// JMS 메시지 큐 생성
Queue queue = session.createQueue("myQueue");
2. 프로듀서로 메시지 보내기
이제 메시지를 전송하는 프로듀서를 만들어보겠습니다.
// JMS 메시지 프로듀서 생성
MessageProducer producer = session.createProducer(queue);
// 메시지 생성
TextMessage message = session.createTextMessage("Hello, World!");
// 메시지 전송
producer.send(message);
// 프로듀서 종료
producer.close();
3. 컨슈머로 메시지 받기
이제 메시지를 수신하는 컨슈머를 만들어보겠습니다.
// JMS 메시지 컨슈머 생성
MessageConsumer consumer = session.createConsumer(queue);
// 메시지 수신 대기
Message receivedMessage = consumer.receive();
// 수신된 메시지 처리
if (receivedMessage instanceof TextMessage) {
TextMessage textMessage = (TextMessage) receivedMessage;
String messageText = textMessage.getText();
System.out.println("Received message: " + messageText);
}
// 컨슈머 종료
consumer.close();
4. 다중 프로듀서와 컨슈머 간의 메시지 공유
여러 프로듀서와 컨슈머가 동시에 메시지를 공유하려면 동일한 메시지 큐를 공유해야 합니다. 위에서 생성한 myQueue
를 여러 프로듀서와 컨슈머에서 공통으로 사용할 수 있습니다.
다중 프로듀서의 경우 동일한 큐에 다른 세션을 사용하여 여러 메시지를 전송할 수 있습니다. 마찬가지로, 다중 컨슈머는 동일한 큐를 구독하고 메시지를 받을 수 있습니다.
이러한 방식으로 여러 프로듀서와 컨슈머 간에 메시지를 공유할 수 있습니다.