ActiveMQ是一个完全支持JMS1.2和JMS1.4规范的JMS provider实现,历史悠久。
什么是JMS
JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
JMS的对象模型
ConnectionFactory | 连接工厂 |
Connection | 连接 |
Session | 会话 |
Destination | 目的 |
MessageProducer | 生产者 |
MessageConsumer | 消费者 |
Message | 消息 |
Broker | 消息中间件的实例 |
JMS 消息模型
1、Point-to-Poinit 点对点 :一对一,一条消息一个消费
2、Publish/Subscribe (Pub/Sub) /主题 (发布订阅) 一条消息多个消费,类似发布一个事件
ActiveMQ的特性
1、支持多种编程语言 (它只是个服务器,遵循通信协议即可)
2、支持多种传输协议 (多种编解码实现)
3、有多种持久化方式 (文件/数据库)
ActiveMQ安装
下载
ActiveMQ官网 下载最新版本。
我这里用linux版本,安装环境为Centos7 +JDK8
下载后上传至虚拟机解压
解压安装
tar -zxvf apache-activemq-5.15.8-bin.tar.gz
也可以直接在虚拟机用 wget下载
启动停止
服务启动 停止
启动: ./bin/activemq start
停止:./bin/activemq stop
默认端口openwire 61618,在配置文件conf/activemq.xml 里修改
web管理端口在 conf/jetty.xml 里修改。
打开防火墙
•或者直接关闭防火墙: systemctl stop firewalld.service
我用的虚拟机虚拟网络采用nat 方式,所以还要将两个端口给映射出来
浏览器输入http://127.0.0.1:8161/admin/
用户名:密码 admin admin
修改用户名密码
可以在conf/jetty-realm.properties 修改用户名密码
配置系统服务 开机启动
新建service 配置
vi /usr/lib/systemd/system/activemq.service
[Unit]
Description=ActiveMQ service
After=network.target
[Service]
Type=forking
#你的路径
ExecStart=/root/activemq/bin/activemq start
ExecStop=/root/activemq/bin/activemq stop
User=root
Group=root
Restart=always
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=activemq
[Install]
WantedBy=multi-user.target
JAVA_HOME 目录配置
注意路径别写错了
通过systemctl管理activemq启停
•启动activemq服务: systemctl start activemq
•查看服务状态: systemctl status activemq
•开机自启: systemctl enable activemq
•检测是否开启成功(enable): systemctl list-unit-files |grep activemq
代码测试
非Spring测试
maven
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.8</version