ActiveMQ 的安装与使用
消息中间件简介
消息中间件(MOM:Message Orient middleware)
消息中间件有很多的用途和优点:
1. 将数据从一个应用程序传送到另一个应用程序,或者从软件的一个模块传送到另外一个模块。
2. 负责建立网络通信的通道,进行数据的可靠传送。
3. 保证数据不重发,不丢失。
4. 能够实现跨平台操作,能够为不同操作系统上的软件集成技工数据传送服务。
ActiveMQ安装
MQ英文名MessageQueue,中文名也就是消息队列,是一个消息的接受和转发的容器,可用于消息推送。
ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多种语言的客户端和协议,而且可以非常容易的嵌入到企业的应用环境中,并有许多高级功能。
1、下载
官方网站:http://activemq.apache.org/
2、安装
下载完毕后进行解压缩。
目录介绍:
bin存放的是脚本文件
conf存放的是基本配置文件
data存放的是日志文件
docs存放的是说明文档
examples存放的是简单的实例
lib存放的是activemq所需jar包
webapps用于存放项目的目录
3、启动
根据你的系统位数,选择相应的启动脚本,我的是64位,双击 E:\apache-activemq-5.15.2\bin\win64 目录下的 activemq.bat 脚本文件,可以看下图的效果。
4、测试
ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动
netstat -an|find "61616"
5、监控
ActiveMQ默认启动时,启动了内置的jetty服务器,提供一个用于监控ActiveMQ的admin应用。
地址:http://127.0.0.1:8161/admin/
用户名和密码都是admin,可以对ActiveMQ服务进行监控。
需要停止服务器,只需要按着Ctrl+Shift+C,之后输入Y即可。
ActiveMQ特性
1、多种语言和协议编写客户端。语言:Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议:OpenWire,Stomp REST,WS Notification,XMPP,AMQP。
2、完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)。
3、对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性。
4、通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上。
5、支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA。
6、支持通过JDBC和journal提供高速的消息持久化。
7、从设计上保证了高性能的集群,客户端-服务器,点对点。
8、支持Ajax。
9、支持与Axis的整合。
10、可以很容易得调用内嵌JMS provider进行测试。
ActiveMQ使用
使用场景
1、多个项目之间集成,可以实现跨平台、多语言、多项目集成。
2、降低系统间模块的耦合度,解耦,增强软件扩展性。
3、系统前后端隔离,屏蔽高安全区。
使用示例
开发时候,需要将安装包解压缩后里面的activemq-all-5.15.2.jar包加入到classpath下面,这个包包含了所有jms接口api的实现。
点对点的消息模型,只需要一个消息生成者和消息消费者,下面我们编写代码。
生产者
package com.wangbo.activemq; 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 wangbo
*
*/
public class JMSProducer { //默认连接用户名
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
//默认连接密码
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
//默认连接地址
private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;
//发送的消息数量
private static final int SENDNUM = 10; public static void main(String[] args) { //连接工厂
ConnectionFactory connectionFactory;
//连接
Connection connection = null;
//会话,接受或者发送消息的线程
Session session;
//消息的目的地
Destination destination;
//消息的生产者
MessageProducer messageProducer;
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKEURL); try { //通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建Session
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//创建一个名为“HelloWorld”的消息队列
destination = session.createQueue("HelloWorld");
//创建消息生产者
messageProducer = session.createProducer(destination);
//发送消息
sendMessage(session, messageProducer); session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
} } /**
* 发送消息
* @param session
* @param messageProducer 消息生产者
* @throws Exception
*/
public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{
for (int i = 0; i < JMSProducer.SENDNUM; i++) {
//创建一条文本消息
TextMessage message = session.createTextMessage("ActiveMQ 发送消息" +i);
System.out.println("发送消息:Activemq 发送消息" + i);
//通过消息生产者发出消息
messageProducer.send(message);
} } }
消费者
package com.wangbo.activemq; 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 javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory; /**
* 消息的消费者(接收者)
*
* @author wangbo
*
*/
public class JMSConsumer { // 默认连接用户名
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
// 默认连接密码
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
// 默认连接地址
private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL; public static void main(String[] args) { // 连接工厂
ConnectionFactory connectionFactory;
// 连接
Connection connection = null;
// 会话,接受或者发送消息的线程
Session session;
// 消息的目的地
Destination destination;
// 消息的消费者
MessageConsumer messageConsumer;
// 实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD,
JMSConsumer.BROKEURL); try { // 通过连接工厂获取连接
connection = connectionFactory.createConnection();
// 启动连接
connection.start();
// 创建session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建一个连接HelloWorld的消息队列
destination = session.createQueue("HelloWorld");
// 创建消息消费者
messageConsumer = session.createConsumer(destination); while (true) {
TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);
if (textMessage != null) {
System.out.println("收到的消息:" + textMessage.getText());
} else {
break;
}
} } catch (JMSException e) {
e.printStackTrace();
} }
}
运行结果
1、首先,启动ActiveMQ
2、运行生产者,eclipse控制台显示:
然后看一下监控显示:
我们可以看到创建了一个名称为HelloWorld的消息队列,队列中有10条消息未被消费,我们也可以通过Browse查看是哪些消息
如果这些队列中的消息,被删除,消费者则无法消费。
3、运行消费者,eclipse控制台显示:
我们再看一下ActiveMQ服务器,Queues内容如下:
我们可以看到HelloWorld的消息队列发生变化,多一个消息者,队列中的10条消息被消费了,点击Browse查看,已经为空了。 点击Active Consumers,我们可以看到这个消费者的详细信息:
参考地址:https://blog.csdn.net/jiuqiyuliang/article/category/5617711
ActiveMQ 的安装与使用的更多相关文章
- activemq的安装与使用
一.activemq的安装 环境:CentOS 6.JDK8 1. 确保系统已安装了可用的jdk版本2. 从网上下载 Linux 版的 ActiveMQ( apache-activemq-5.11.1 ...
- ActiveMQ的安装与配置
ActiveMQ的安装与配置详情 (1)ActiveMQ的简介 MQ: (message queue) ,消息队列,也就是用来处理消息的,(处理JMS的).主要用于大型企业内部或与企业之间的传递数据信 ...
- 170516、ActiveMQ 的安装与使用(单节点)
ActiveMQ 的安装与使用(单节点)IP: 192.168.4.101环 境: CentOS 6.6 . JDK71. 安装 JDK 并配置环境变量(略)JAVA_HOME=/usr/local/ ...
- activemq的安装使用
近期有项目中用到消息队列,JMS规范中实现最好的开源框架就是activemq.所以选择它(当然这是我老大决定的,像我这样的刚入职场的小菜鸟考虑问题还不太全面)作为消息队列数据传输.公司有有成型的消息队 ...
- 淘淘商城项目_同步索引库问题分析 + ActiveMQ介绍/安装/使用 + ActiveMQ整合spring + 使用ActiveMQ实现添加商品后同步索引库_匠心笔记
文章目录 1.同步索引库问题分析 2.ActiveM的介绍 2.1.什么是ActiveMQ 2.2.ActiveMQ的消息形式 3.ActiveMQ的安装 3.1.安装环境 3.2.安装步骤 4.Ac ...
- ActiveMQ的安装与使用。
1.什么是ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE .4规范的 JMS Provider实现,尽 ...
- Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)
文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...
- Active-MQ的安装
(1)首先就是下载软件 wget http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0 ...
- 分布式架构实战--ActiveMQ的安装与使用(单节点)
具体内容请参考样例代码和视频教程: http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.10 ...
- ActiveMQ——activemq的安装详情,修改密码
1.安装 下载 http://activemq.apache.org/download-archives.html, [推荐]ActiveMQ 5.13.4 Release与jdk1.7搭配(其它版本 ...
随机推荐
- Spring基础篇——Spring的AOP切面编程
一 基本理解 AOP,面向切面编程,作为Spring的核心思想之一,度娘上有太多的教程啊.解释啊,但博主还是要自己按照自己的思路和理解再来阐释一下.原因很简单,别人的思想终究是别人的,自己的理解才是 ...
- Workerman创建聊天室实例
// 标记是全局启动 define('GLOBAL_START', 1); require_once __DIR__ . '/Workerman/Connection.php'; require_on ...
- 11.Redis缓存设计
11.Redis缓存设计11.1 缓存的收益和成本11.2 缓存更新策略11.3 缓存粒度控制11.4 穿透优化11.5 无底洞优化11.6 雪崩优化11.7 热点key重建优化11.8 本章重点回顾
- RDMA RC UC UD
RC:面向连接的可靠服务 UC:面向连接的不可靠服务 UD:面向数据报的不可靠服务 RD:面向非连接(类似UDP)的可靠服务 面向连接 vs 面向数据报 相同点:两者的通信均包括双方QP对的参与 不同 ...
- span的title标签中的换行
var strs = data.flowSummary; strs=strs.replace(/燮r燮n/g," "); js的全局替换用/要替换的字符串/g span的titl ...
- Android自动化之Monkey环境搭建(一)
从事测试行业两年了,一直很喜欢研究新技术,但是最近有点慵懒.正好公司新出了产品,督促我学习monkey用来测其稳定性. 网上搜索了很久,内容总是很零散,通常需要找几篇文章才能搭好环境.特写此文,一篇文 ...
- 《修炼之道:.NET开发要点精讲》读书笔记(一)
CLR 公共语言运行库 没有CLR的存在,就不能讲该中间件转换成对应操作系统中的机器指令. 程序集是非完全编译的产物,它兼备了源代码和本地代码的特性,是一种介于源代码和本地代码之间的独立存在的一种数据 ...
- monkey测试样例
我们通过在CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了.首先,我们准备了一个有bug的项目CityWeather:通过测试这个项目(源码在附件文件夹中) ...
- linux密码特殊字符识别
当密码是! @ # 等特殊字符, 用“\” 转译字符:比如密码为123!@#,我们在可以写123\!\@\#
- uiautomatorviewer报错“Error taking device screenshot: EOF” ,
uiautomatorviewer报错“Error taking device screenshot: EOF” ,千万不要装手机助手,不要装手机助手,不要装手机助手 uiautomatorview ...