비동기식 메시지 통신을 지원하는 API로써 애플리케이션 간에 데이터를 효과적으로 교환하고 통신
- Producer는 메시지를 생성하고, Queue 또는 Topic에 보냄
- Consumer는 메시지를 받아서 처리
Topic 사용
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSQueueTest {
public static void main(String[] args) {
try {
// JMS 연결 설정
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
// 세션 생성
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("myQueue");
// 메시지 송신
MessageProducer producer = session.createProducer(queue);
TextMessage message = session.createTextMessage("Hello, JMS Queue!");
producer.send(message);
// 메시지 수신
MessageConsumer consumer = session.createConsumer(queue);
Message receivedMessage = consumer.receive();
if (receivedMessage instanceof TextMessage) {
TextMessage textMessage = (TextMessage) receivedMessage;
System.out.println("Received message: " + textMessage.getText());
}
// 연결 종료
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Queue 사용
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSTopicExample {
public static void main(String[] args) {
try {
// JMS 연결 설정
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
// 세션 생성
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("myTopic");
// 메시지 송신
MessageProducer producer = session.createProducer(topic);
TextMessage message = session.createTextMessage("Hello, JMS Topic!");
producer.send(message);
// 메시지 수신
MessageConsumer consumer = session.createConsumer(topic);
Message receivedMessage = consumer.receive();
if (receivedMessage instanceof TextMessage) {
TextMessage textMessage = (TextMessage) receivedMessage;
System.out.println("Received message: " + textMessage.getText());
}
// 연결 종료
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}