ActiveMQ的点对点消息模型的小例子

一个小白的自我记录。

首先需要在你电脑的环境变量中配置好JAVA_HOME,这个不要忘记。

然后去这个地址去下载你想要的ActiveMQ版本。http://activemq.apache.org/download-archives.html

下载后直接解压即可。

ActiveMQ的点对点消息模型的小例子_第1张图片

根据操作系统的位数选择要使用win64或者win32,我的系统位数是64,点进去后,双击activemq.bat。

然后再按浏览器上输入 http://localhost:8161/admin/  会弹出一个Window安全的对话框,用户名和密码默认都是admin,输入进去即可。

如果双击activemq.bat后启动不成功,先检查一个你的JAVA_HOME的配置,我刚开始也是不好用,所以用了个绝招,换了个版本就好了。小白一个,其中的道理不是很懂。

如果能够出现这个页面就说明环境已经搭建好了

ActiveMQ的点对点消息模型的小例子_第2张图片

既然环境已经搭建好了 剩下的就是开始搞一搞项目了。

创建一个java项目,在你下载的ActiveMQ的根目录有一个activemq-all-5.9.0.jar包,将其导入到你的项目。


ActiveMQ的点对点消息模型的小例子_第3张图片


1,建立一个生成者、发送者,用来发送消息


package com.activemq.producer;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 消息生产者、发送者
 * 
 * @author Administrator
 * 
 */
public class JMSProducer {

	public static void main(String[] args) {
		// 连接工厂
		ConnectionFactory connectionfactory = null;
		// 连接
		Connection connection = null;
		// 会话 接收或发送消息的线程
		Session session = null;
		// 消息的目的地
		Destination destination = null;
		// 消息生产者、发送者
		MessageProducer messageProducer;

		try {
			// 实例化连接工厂
			connectionfactory = new ActiveMQConnectionFactory(
					ActiveMQConnection.DEFAULT_USER, // 默认的连接用户名
					ActiveMQConnection.DEFAULT_PASSWORD, // 默认的连接密码
					ActiveMQConnection.DEFAULT_BROKER_URL); // 默认的连接地址
			// 创建连接
			connection = connectionfactory.createConnection();
			// 启动连接
			connection.start();
			// 创建Session 第一个参数是指是否开启事务, 第二个参数是指验证方式
			session = connection.createSession(Boolean.TRUE,
					Session.AUTO_ACKNOWLEDGE);
			// 创建消息队列,这个名称在后面能够用到
			destination = session.createQueue("myFirstMQ");
			// 创建消息生成者
			messageProducer = session.createProducer(destination);

			// 循环发送信息
			for (int i = 0; i < 10; i++) {
				// 发送一个简单消息
				TextMessage textMessage = session
						.createTextMessage("ActiveMQ send " + i);

				System.out.println("ActiveMQ send " + i);
				messageProducer.send(textMessage);
			}
			// 提交
			session.commit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		// 关闭连接
		} finally {
			if (connection != null) {
				try {
					connection.close();
				} catch (JMSException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

}


启动这个类以后,在控制台可以看到发送的消息,然后到ActiveMQ的页面中可以看见发送成功与否


ActiveMQ的点对点消息模型的小例子_第4张图片


2,建立一个监听的类实现MessageListener接口


package com.activemq.listener;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

/**
 * 监听器
 * 
 * @author Administrator
 * 
 */
public class Listener implements MessageListener {

	public void onMessage(Message message) {
		// TODO Auto-generated method stub
		try {
			System.out.println("收到的消息:" + ((TextMessage) message).getText());
		} catch (JMSException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}


3,当消息发送以后,我们可以去ActiveMQ这个服务器上去监听是否有消息可以让我们消费,消费消息也就是接收消息。建立一个消息的消费者类。


package com.activemq.consumer;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import com.activemq.listener.Listener;

/**
 * 接收消息监听的方式
 * 
 * @author Administrator
 * 
 */
public class JMSConsumer2 {

	// 默认的连接用户名
	// 默认的连接密码
	// 默认的连接地址

	public static void main(String[] args) {

		// 连接工厂
		ConnectionFactory connectionfactory;
		// 连接
		Connection connection = null;
		// 会话 接收或发送消息的线程
		Session session;
		// 消息的目的地
		Destination destination;
		// 消息的消费者
		MessageConsumer messageConsumer;
		try {
			// 实例化连接工厂
			connectionfactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
					ActiveMQConnection.DEFAULT_PASSWORD, ActiveMQConnection.DEFAULT_BROKER_URL);
			// 创建连接
			connection = connectionfactory.createConnection();
			// 启动连接
			connection.start();
			// 创建Session ,消费的清空下要吧事务关闭
			session = connection.createSession(Boolean.FALSE,
					Session.AUTO_ACKNOWLEDGE);
			// 创建消息队列 要与发送消息的queue相同,也就也说,你可以指定要消费的对象。
			destination = session.createQueue("myFirstMQ");
			// 创建消息消费者
			messageConsumer = session.createConsumer(destination);
			messageConsumer.setMessageListener(new Listener());
		} catch (JMSException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}



运行这个类,会在控制台上看到收到的信息,也要去ActiveMQ的服务器上来查看变化,自己可以前后对比一下。



ActiveMQ的点对点消息模型的小例子_第5张图片



你可能感兴趣的:(JMS,ActiveMQ,点对点消息模型)