// 导入必要的JMS库
import javax.jms.*;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class JMSExample {
// 发送消息的示例方法
public static void sendMessage(String queueName, String message) {
Connection connection = null;
Session session = null;
try {
// 获取初始上下文
InitialContext initialContext = new InitialContext();
// 查找连接工厂和队列
QueueConnectionFactory factory = (QueueConnectionFactory) initialContext.lookup("QueueConnectionFactory");
Queue queue = (Queue) initialContext.lookup(queueName);
// 创建连接和会话
connection = factory.createQueueConnection();
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建消息生产者和消息
MessageProducer producer = session.createProducer(queue);
TextMessage textMessage = session.createTextMessage(message);
// 发送消息
producer.send(textMessage);
System.out.println("Sent message: " + message);
} catch (NamingException | JMSException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (session != null) session.close();
if (connection != null) connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
// 接收消息的示例方法
public static void receiveMessage(String queueName) {
Connection connection = null;
Session session = null;
try {
// 获取初始上下文
InitialContext initialContext = new InitialContext();
// 查找连接工厂和队列
QueueConnectionFactory factory = (QueueConnectionFactory) initialContext.lookup("QueueConnectionFactory");
Queue queue = (Queue) initialContext.lookup(queueName);
// 创建连接和会话
connection = factory.createQueueConnection();
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建消息消费者并接收消息
MessageConsumer consumer = session.createConsumer(queue);
connection.start(); // 启动连接以接收消息
// 接收消息并打印
TextMessage receivedMessage = (TextMessage) consumer.receive(1000); // 等待1秒
if (receivedMessage != null) {
System.out.println("Received message: " + receivedMessage.getText());
} else {
System.out.println("No message received.");
}
} catch (NamingException | JMSException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (session != null) session.close();
if (connection != null) connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// 示例:发送和接收消息
sendMessage("queue/test", "Hello, JMS!");
receiveMessage("queue/test");
}
}
QueueConnectionFactory创建连接,并通过createQueueSession创建会话。会话负责创建消息生产者和消费者。MessageProducer将消息发送到指定的队列。MessageConsumer从队列中接收消息,并通过receive方法获取消息内容。finally块中确保所有资源(如连接和会话)都被正确关闭,以避免资源泄漏。这段代码展示了如何使用JMS(Java Message Service)来发送和接收消息。
上一篇:java八种基本类型
下一篇:java单元测试工具
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站