官方文档: Using Apache ActiveMQ
ActiveMQ 简介
MQ是消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介,常用的有ActiveMQ,RabbitMQ,kafka。ActiveMQ 是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。
JMS 概述
JMS 全称:Java Message Service ,即为 Java 消息服务,是一套 java 消息服务的 API 接口。实现了 JMS 标准的系统,称之为 JMS Provider。
消息队列
消息队列是在消息的传输过程中保存消息的容器,提供一种不同进程或者同一进程不同线程直接通讯的方式。
消息队列名词解释
- Producer:消息生产者,负责产生和发送消息到 Broker;
- Broker:消息处理中心。负责消息存储、确认、重试等,一般其中会包含多个 queue;
- Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理;
常见消息队列应用
- ActiveMQ: ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。
- RabbitMQ: RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。开发语言为Erlang。
- RocketMQ: 由阿里巴巴定义开发的一套消息队列应用服务。
- Kafka: Kafka是一种分布式的,基于发布/订阅的消息系统。Kafka生态完善,其代码是用Scala语言写成,可靠性比RocketMQ低一些。
安装 JDK
上传 jdk 安装包到服务器(略)
安装 jdk 环境
1
2
3
4
5
6
7
8
9
10
11mkdir /usr/local/java
tar xf jdk-8u202-linux-x64.tar.gz -C /usr/local/java/
cat > /etc/profile.d/java.sh<<EOF
#!/bin/bash
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
export CLASSPATH=\$CLASSPATH:\$JAVA_HOME/lib:\$JAVA_HOME/jre/lib
export PATH=\$JAVA_HOME/bin:\$JAVA_HOME/jre/bin:\$PATH:\$HOME/bin
EOF
source /etc/profile.d/java.sh验证 jdk
1
2
3
4java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
CentOS 7 部署 ActiveMQ
安装 ActiveMQ 服务
下载 ActiveMQ 安装包
1
wget -P /usr/local/src https://mirrors.bfsu.edu.cn/apache/activemq/5.16.2/apache-activemq-5.16.2-bin.tar.gz
解压安装包
1
2
3cd /usr/local/src
tar xf apache-activemq-5.16.2-bin.tar.gz
mv apache-activemq-5.16.2 /usr/local/activemq配置 systemd 服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18cat >/usr/lib/systemd/system/activemq.service <<EOF
[Unit]
Description=Apache ActiveMQ Service
After=network-online.target
[Service]
Type=forking
ExecStart=/usr/local/activemq/bin/activemq start
ExecStop=/usr/local/activemq/bin/activemq stop
Restart=always
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=activemq
[Install]
WantedBy=multi-user.target
EOF修改
activemq/bin/env
文件,添加JAVA_HOME
环境变量1
sed -i 's@^#JAVA_HOME=""@JAVA_HOME="/usr/local/java/jdk1.8.0_202"@' /usr/local/activemq/bin/env
启动 ActiveMQ 并配置开机启动
1
systemctl enable --now activemq.service
查看 ActiveMQ 运行状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15systemctl status activemq.service
● activemq.service - Apache ActiveMQ Service
Loaded: loaded (/usr/lib/systemd/system/activemq.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-07-09 09:33:23 CST; 17s ago
Process: 17410 ExecStart=/usr/local/activemq/bin/activemq start (code=exited, status=0/SUCCESS)
Main PID: 17485 (java)
CGroup: /system.slice/activemq.service
└─17485 /usr/local/java/jdk1.8.0_202/bin/java -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/usr/local/activemq//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -...
Jul 09 09:33:23 redis systemd[1]: Starting Apache ActiveMQ Service...
Jul 09 09:33:23 redis activemq[17410]: INFO: Loading '/usr/local/activemq//bin/env'
Jul 09 09:33:23 redis activemq[17410]: INFO: Using java '/usr/local/java/jdk1.8.0_202/bin/java'
Jul 09 09:33:23 redis activemq[17410]: INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
Jul 09 09:33:23 redis activemq[17410]: INFO: pidfile created : '/usr/local/activemq//data/activemq.pid' (pid '17485')
Jul 09 09:33:23 redis systemd[1]: Started Apache ActiveMQ Service.修改配置文件
/usr/local/activemq/conf/jetty.xml
;找到如下配置1
2
3
4
5<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="127.0.0.1"/>
<property name="port" value="8161"/>
</bean>将内容修改为以下,然后重启 ActiveMQ:
1
2
3
4
5<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="0.0.0.0"/>
<property name="port" value="8161"/>
</bean>浏览器访问
http://192.168.64.16:8161/
,在弹窗中输入用户名和密码;然后点击Manage ActiveMQ broker
,如下图所示:ActiveMQ web 控制台的默认用户名密码为
admin/admin
,可以在conf/users.properties
中进行修改;