Java连接ActiveMQ

分类:软件编程
阅读:347
作者:majingjing
发布:2017-08-19 10:16

JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

此次插入关系图 image.png

要使用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();
				}

			}
		});

	}
}

示例源代码: