java消息中间件简介
warning:
这篇文章距离上次修改已过230天,其中的内容可能已经有所变动。
Java消息中间件(Java Message Service,JMS)是一个标准的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。这个模式被广泛应用于企业级消息通信。
JMS的两种消息模式:
- 点对点(Point-to-Point,P2P): 每个消息只能有一个接收者,消息发送后,消息存储在消息队列中,一旦有消费者连接到队列,消息就会被消费者接收处理。
- 发布/订阅(Publish/Subscribe,Pub/Sub): 每个消息可以有多个订阅者,当消息发布到主题后,所有订阅该主题的订阅者都可以接收到消息。
JMS的用途:
- 异步处理:通过异步处理,系统可以更高效地处理消息。
- 系统解耦:通过消息服务,系统间可以解耦,减少耦合度。
- 流量削峰:通过消息队列,可以缓解高并发带来的性能问题。
- 数据同步:通过消息队列,可以实现不同系统间的数据同步。
以下是一个简单的JMS生产者和消费者的代码示例:
// 生产者
public class JMSProducer {
public void sendMessage() {
// 获取连接工厂
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");
// 发送消息
producer.send(message);
// 关闭资源
producer.close();
session.close();
connection.close();
}
}
// 消费者
public class JMSConsumer {
public void receiveMessage() {
// 获取连接工厂
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");
// 创建消息消费者
MessageConsumer consumer = session.createConsumer(queue);
// 设置消息监听
consumer.setMessageListener(message -> {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("Received Message: " + textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
});
// 等待接收消息
// 可以设置超时时间等待消息
// 关闭资源
// 消费者通常不会关闭连接和会话,因为它们需要持续监听消息
}
}
在这个示例中,我们使用了Apache ActiveMQ作为JMS服务提供者。
评论已关闭