JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
此次插入关系图
要使用Java消息服务,就必须要有一个JMS提供者,管理会话和队列。既有开源的提供者也有专有的提供者。 开源的提供者有很多这里就介绍下:ActiveMQ
其实java连接activemq和连接数据库差不多 下面给出简单的示例程序代码
消息生产者
public class MyProducer {
public static void main(String[] args) throws Exception {
// 连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 构造从工厂得到连接对象
Connection connection = connectionFactory.createConnection();
// 启动
connection.start();
// 获取操作连接
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 获取目标
Destination destination = session.createQueue("tm-activemq-demo");
// 得到消息生成者【发送者】
MessageProducer producer = session.createProducer(destination);
// 设置不持久化,此处演示,实际根据项目决定
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// 构造消息
producer.send(session.createTextMessage("发送测试消息aa12a"));
// 提交当前会话
session.commit();
}
}
消息消费者
public class MyConsumer {
public static void main(String[] args) throws Exception {
// 连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 构造从工厂得到连接对象
Connection connection = connectionFactory.createConnection();
// 启动
connection.start();
// 获取操作连接
final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 获取目标
Destination destination = session.createQueue("tm-activemq-demo");
// 得到消费者
MessageConsumer consumer = session.createConsumer(destination);
// 监听消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
System.out.println("收到消息" + ((TextMessage) message).getText());
// 提交当前会话
session.commit();
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}
}
示例源代码: