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

本文是关于ActiveMQ点对点消息模型的入门教程。首先介绍如何配置JAVA_HOME环境变量,从Apache官网下载并启动ActiveMQ,然后通过访问特定URL验证服务器已启动。接着,创建Java项目,引入activemq-all-5.9.0.jar,构建消息生成者发送消息,并实现MessageListener接口创建消息监听器。最后,通过消费者类监听和消费消息,完成ActiveMQ的基本使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个小白的自我记录。

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

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

下载后直接解压即可。


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

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

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

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


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

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




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的页面中可以看见发送成功与否




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的服务器上来查看变化,自己可以前后对比一下。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值