ActiveMQ安装配置和使用简例

简介: 本文作者:Zhang Phil原文链接:http://blog.csdn.net/zhangphil/article/details/48173665ActiveMQ安装配置和使用简例ActiveMQ是一套JMS(Java Message Service)开源消息服务实现的组件。

本文作者:Zhang Phil

原文链接:http://blog.csdn.net/zhangphil/article/details/48173665


ActiveMQ安装配置和使用简例


ActiveMQ是一套JMS(Java Message Service)开源消息服务实现的组件。以Windows操作系统为例,本文简述了ActiveMQ的安装配置和使用简例。消息服务是互联网应用的最基本功能,只要是互联网应用,就少不了消息通信。而ActiveMQ是一个相对比较成熟稳定的JMS消息服务组件,安装简单,使用简单,可以快速上手。很容易就实现当下很多应用的消息推送、用户反馈等消息服务功能。

安装和使用方法

(1)首先到ActiveMQ官方网站下载最新发布的ActiveMQ版本:http://activemq.apache.org/download.html
以ActiveMQ 5.12.0为例,apache-activemq-5.12.0-bin.zip的下载链接地址:http://www.apache.org/dyn/closer.cgi?path=/activemq/5.12.0/apache-activemq-5.12.0-bin.zip


(2)下载后,将这个压缩包解压,找到解压目录下的 …\apache-activemq-5.12.0-bin\apache-activemq-5.12.0\bin\win64\activemq.bat 文件,(32位计算机则选择win32目录下的activemq.bat)运行之。
其中 …\apache-activemq-5.12.0-bin\apache-activemq-5.12.0\activemq-all-5.12.0.jar将在后面的Java程序中作为引用的库包导入使用。
注意!运行activemq.bat前提需要java运行环境。启动成功后如图所示:


ActiveMQ默认绑定本地端口61616,如果一切顺利,启动ActiveMQ成功后,可以执行命令:

netstat -an|find "61616"

查看到端口61616的状态如图:


表明ActiveMQ消息服务器端启动已经成功,已经在端口61616收发消息。

(3)下面就可以使用ActiveMQ在自己的Java程序中编写代码收发消息。以两个java应用程序为例,一个单独的Sender.java作为消息的发送方,另外一个Receiver.java作为消息的接收方。

Sender.java

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
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;

public class Sender {

	//标明一个消息队列。
	private	static	final	String	MESSAGE_QUEUE="zhangphil";
	
	//默认的ActiveMQ服务器端绑定的端口。
	private	static	final	int	PORT=61616;
	
	//发送10条消息。
	private static final int COUNT = 10;

	public static void main(String[] args) {
		
		// ConnectionFactory :连接工厂,JMS 创建连接
		ConnectionFactory connectionFactory;
		
		// Connection :JMS 客户端到JMS Provider 的连接
		Connection connection = null;
		
		// Session: 一个发送或接收消息的线程
		Session session;
		
		// Destination :消息的目的地
		Destination destination;
		
		// MessageProducer:消息生产者。
		MessageProducer producer;
		
		// 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
		connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD, "tcp://127.0.0.1:"+PORT);
		
		try {
			// 构造从工厂得到连接对象
			connection = connectionFactory.createConnection();
			
			// 启动
			connection.start();
			
			// 获取操作连接
			session = connection.createSession(Boolean.TRUE.booleanValue(), Session.AUTO_ACKNOWLEDGE);
			
			// 获取session注意参数值 zhangphil 是一个服务器的queue,须在在ActiveMq的console配置
			destination = session.createQueue(MESSAGE_QUEUE);
			
			// 得到消息生成者,发送者
			producer = session.createProducer(destination);
			
			// 设置不持久化
			producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
			
			// 发送消息。
			sendMessage(session, producer);
			
			session.commit();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (null != connection)
					connection.close();
			} catch (Throwable ignore) {
			}
		}
	}

	public static void sendMessage(Session session, MessageProducer producer){
		for (int i = 0; i <COUNT; i++) {

			TextMessage message = null;
			try {
				message = session.createTextMessage("zhangphil message "+i);
			} catch (JMSException e) {
				e.printStackTrace();
			}
	
			// 发送消息到目的地方
			try {
				producer.send(message);
				System.out.println("发送消息:"+message.getText());
			} catch (JMSException e) {
				e.printStackTrace();
			}
		}
	}
}


Receiver.java

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;


public class Receiver {
	
	private	static	final	String	MESSAGE_QUEUE="zhangphil";
	private	final static	int	PORT=61616;
	
	public static void main(String[] args) {
		
		// ConnectionFactory :连接工厂,JMS 用它创建连接
		ConnectionFactory connectionFactory;
		
		// Connection :JMS 客户端到JMS Provider 的连接
		Connection connection = null;
		
		// Session: 一个发送或接收消息的线程
		Session session;
		
		// Destination :消息的目的地;消息发送给谁.
		Destination destination;
		
		// 消息接收者
		MessageConsumer consumer;
		
		connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD, "tcp://127.0.0.1:"+PORT);
		
		try {
			// 构造从工厂得到连接对象
			connection = connectionFactory.createConnection();
			
			// 启动
			connection.start();
			
			// 获取操作连接
			session = connection.createSession(Boolean.FALSE.booleanValue(), Session.AUTO_ACKNOWLEDGE);
			
			// 获取session注意参数值 zhangphil 是一个服务器的queue,只接受相同message queue字段的消息。
			destination = session.createQueue(MESSAGE_QUEUE);
			
			consumer = session.createConsumer(destination);
			
			while (true) {
				TextMessage message = (TextMessage) consumer.receive(1000);
				
				if (null != message) {
					System.out.println("收到消息: " + message.getText());
				} else {
					//如果不break,receiver将轮询接收消息。
					//break,Receiver.java退出。
					//break;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (null != connection)
					connection.close();
			} catch (Throwable ignore) {
			}
		}
	}
}

编译上述两个java文件,需要导入ActiveMQ的jar库包。将(2)中的…\apache-activemq-5.12.0-bin\apache-activemq-5.12.0\activemq-all-5.12.0.jar作为库包导入进来。


ActiveMQ的基本配置

ActiveMQ默认的系统配置网页是: http://localhost:8161/admin/
用户名和密码默认均是: admin



相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
消息中间件 Java Linux
activeMQ入门安装
activeMQ入门安装
261 0
activeMQ入门安装
|
6月前
|
消息中间件 Java Docker
RabbitMQ入门指南(一):初识与安装
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了消息队列、RabbitMQ简介及其安装步骤等内容。
129 0
RabbitMQ入门指南(一):初识与安装
|
6月前
|
消息中间件 JavaScript 前端开发
Window系统下载与安装RabbitMQ
Window系统下载与安装RabbitMQ
135 0
|
6月前
|
消息中间件 Linux 开发工具
Linux系统安装RabbitMQ详细教程
Linux系统安装RabbitMQ详细教程
117 0
|
消息中间件 Ubuntu Shell
ubuntu安装rabbitmq教程 避坑
ubuntu安装rabbitmq教程 避坑
483 0
|
消息中间件 Linux
2、RabbitMQ教程-在Linux上安装RabbitMQ(亲测有效)
2、RabbitMQ教程-在Linux上安装RabbitMQ(亲测有效)
278 0
2、RabbitMQ教程-在Linux上安装RabbitMQ(亲测有效)
|
消息中间件 监控 Java
windows安装ActiveMQ
SpringBoot中集成ActiveMQ,需要先安装一个ActiveMQ,所以先记录下在本地安装的步骤。
138 0
windows安装ActiveMQ
|
消息中间件 网络协议 Linux
Linux环境下RabbitMQ安装教程
Linux环境下RabbitMQ安装教程
349 0
Linux环境下RabbitMQ安装教程
|
消息中间件 Java 中间件
ActiveMQ下载安装使用教程
本文介绍如何下载安装jdk,希望对大家有所帮助。
544 0
ActiveMQ下载安装使用教程