文章目录
认识 ActiveMQ
以下内容基本上来自于 ActiveMQ 的官网
http://activemq.apache.org/components/classic/
基本简介
Apache ActiveMQ 是一个开源的消息和模式集成服务
支持多种客户端语言和协议,完全支持 JMS1.1 和 J2EE 1.4 的特性
从具体实现来说,ActiveMQ 本身的功能是超过 JMS 1.1 的定义的,比如消息持久化、消息重发、消息确认和消息的分组。
JMS 1.1 是一个Java API 标准
原文:
Java Message Service (JMS)
The Java Message Service (JMS) API is a messaging standard that allows application components based on the Java Platform Enterprise Edition (Java EE) to create, send, receive, and read messages. It enables distributed communication that is loosely coupled, reliable, and asynchronous.
翻译:
Java Message Service (JMS)
JMS API 是一个消息标准,允许基于 Java EE (Java 企业级开发) 的应用组件创建,发送,接收和读取消息。JMS 规定消息分发通信是松耦合、可靠和异步的。
J2EE 1.4
Java 2 企业级应用 1.4 版本,细节不说了
我们日常开发现在一般都是 J2EE 1.5 了
J2EE 1.4 官方帮助文档:https://docs.oracle.com/javaee/1.4/tutorial/doc/#wp84181
ActiveMQ 的特性
支持多种语言:Java、C、C++、C#、Ruby、Python、PHP 等
支持多种协议:OpenWire、Stomp、AMQP v1.0、MQTT v3.1
完全支持企业级开发使用 JMS 客户端或者 Message Broker(消息代理)
支持多种分发特性,比如消息分组、虚拟 Destinations(目标消息队列)、通配符及混合 Destinations
全面支持 JMS 1.1 和 J2EE 1.4,支持临时消息、持久化消息、事务和XA事务(分布式事务)
Java 平台支持对ActiveMQ 进行整合的企业级框架有两个 Spring 和 Camel;
支持可插拔的协议比如:in-VM、TCP、SSL、NIO、UDP、multicast、JGroups 和 JXTA
支持使用JDBC 进行高效的数据库持久化(保存到数据库)
默认情况queue被持久化到磁盘,topic 不持久化,但是ActiveMQ 支持 持久化topic,通时ActiveMQ 支持内存级别的测试场景
ActiveMQ 对 destinations 的名字大小写敏感
ActiveMQ 支持大文件的传输,JMS规范中的消息类型包括TextMessage、MapMessage、ObjectMessage、BytesMessage、和StreamMessage等五种,ActiveMQ也有对应的实现.大文件使用 StreamMessage,ActiveMQ 4.2 或之后版本建议使用 Blob Messages
ActiveMQ 拥有broker 的概念,每一个 broker 在设计上拥有只属于自己的 持久数据库,如果需要多个 broker 连接同一个数据库,那么就给他们分配不同的数据库用户
ActiveMQ 对 cluster(集群)的支持方式有:Queue consumer clusters、Broker clusters
ActiveMQ 确保有序性:使用 http://activemq.apache.org/exclusive-consumer 一个queue消息一直发给一个消费者除非这个消费者挂了;使用 http://activemq.apache.org/message-groups,消息分组
ActiveMQ 的安装和启动
ActiveMQ 有众多版本
访问官方网址可以得到所有版本的下载链接
http://activemq.apache.org/download-archives.html
ActiveMQ 支持多个平台
ActiveMQ 支持 Windows、OS X、Linux 、AIX 、Solaris
本文选择 5.14.5 这个版本,点击相应链接 (http://activemq.apache.org/activemq-5145-release.html) 可以看到官方提供了 Windows Distribution 和 Unix/Linux/Cygwin Distribution
这里我们选择 Windows 平台的版本
JDK 版的建议
ActiveMQ 5.0-5.7 支持 Java 5.0 及以后版本
ActiveMQ 5.8-5.10 需要 Java 6 或者更高版本
ActiveMQ 5.11 及以后版本 需要 Java 7 或以后版本.
使用 Java 1.4 请移步 http://activemq.apache.org/can-i-use-activemq-5x-or-later-on-java-14
解压即安装
ActiveMQ 是免安装的,解压即安装
认识默认的两个端口
对于刚刚接触 ActiveMQ 同学一定遇到过两个熟悉的端口号:
8161
和61616
其中 8161 是 ActiveMQ 提供的管理页面默认访问端口,该端口的配置文件为 apache-activemq-5.14.5\conf\jetty.xml
61616 是 ActiveMQ 对外暴露的默认的通信端口,该端口的配置文件为 apache-activemq-5.14.5\conf\activemq.xml
启动 ActiveMQ
在 Windows 环境下启动 ActiveMQ 的方式是 点击
apache-activemq-5.14.5\bin\win64\activemq.bat
文件(我的系统是64位的,如果是32位操作系统则点击apache-activemq-5.14.5\bin\win32\activemq.bat
)
如果是 Mac 操作系统,则需要在解压相应的安装包,然后在控制台操作:打开 apache-activemq-5.14.5/bin/macosx
运行 ./activemq start
访问 ActiveMQ 管理页面
ActiveMQ 启动之后,即可以访问其提供的管理页面,地址为 http://localhost:8161/
在登陆之后就可以通过这个页面看到 ActiveMQ 目前消息队列的接收、处理和发送情况了,甚至可以模拟发送。
但是必须先登陆 http://localhost:8161/admin/ , 默认的用户名和密码为 admin/admin 或者 user/user,二者的区别在于admin 的角色是 admin,user 的角色是 user
默认的访问者 admin 和 user 的配置
默认情况下,ActiveMQ 用户配置位置为
apache-activemq-5.14.5\conf\jetty-realm.properties
从格式可以出来,它是按照 用户名,密码,角色来配置的
# username: password [,rolename ...]
admin: admin, admin
user: user, user
参考链接
[1]、http://activemq.apache.org/components/classic/
[2]、https://www.oracle.com/technetwork/java/jms/index.html
[3]、http://activemq.apache.org/what-platforms-does-activemq-support
[4]、https://docs.oracle.com/javaee/1.4/tutorial/doc/#wp84181
[5]、http://activemq.apache.org/are-destinations-case-sensitive
[6]、http://activemq.apache.org/can-two-brokers-share-the-same-database
[7]、 http://activemq.apache.org/exclusive-consumer
[8]、http://activemq.apache.org/message-groups