1 下载安装包
自从ActiveMQ5.17.0版本开始,要使用java11+版本,所以我这里用5.16.6版本,支持java8版本,参考本教程之前,请确保已经安装java环境。
wget https://archive.apache.org/dist/activemq/5.16.6/apache-activemq-5.16.6-bin.tar.gz
2 解压缩
# 解压
tar -zxvf apache-activemq-5.16.6-bin.tar.gz
# 移动位置并且该名称
mv apache-activemq-5.16.6 /opt/software/activemq5
3 启动
# 后台启动
./activemq console
# 守护进程方式启动
./activemq start
4 远程访问
ActiveMQ默认只能本机访问,所以需要修改jetty.xml
,找到id为jettyPort
的bean标签,修改host
属性为0.0.0.0
,大概位置在117
行左右。
# 进入到conf文件夹
cd conf
# 编辑jett.xml文件
vim jetty.xml
# 找到jettyPort的bean标签,host改为 0.0.0.0
修改完成之后,重启activemq。访问http://localhost:8161/,输入账号密码即可登录。
账号:admin
密码:admin
# 停止activemq
./activemq stop
# 启动activemq
./activemq start
登录完成之后看到以下页面,代表登录成功。
5 监听端口
ActiveMQ 的默认端口是 61616。项目中应该监听61616端口。
6 Web示例
Active MQ提供了几个演示的示例,从 5.8 开始,demo 被排除在默认配置之外。要使用 Web 示例启动代理,请使用activemq-demo.xml
配置文件。以下是启动实例的命令。启动后直接访问http://localhost:8161/demo即可
bin/activemq console xbean:examples/conf/activemq-demo.xml
7 配置持久化
ActiveMq默认持久化是KahaDB,可以在conf目录下的activemq.xml中看到。我这里用的是mysql8.0进行持久化。
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
7.1 安装依赖包
把maven仓库下的mysql包,复制到activemq
安装目录下的lib
文件夹下,我这里用的是mysql-connector-java-8.0.21.jar
7.2 编辑配置文件
编辑conf/activemq.xml文件,注释persistenceAdapter
标签,改用mysql持久化,不用KahaDB
持久化,注释之后添加以下配置
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds" />
</persistenceAdapter>
配置mysql数据源,注意:mysql连接中的&
要用&
占位符代替,配置要在beans
标签下,一定不要写在broker
标签
<bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/activemq?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
启动后会自动创建三张表,分别是:
- activemq_acks:用于存储消息,Queue和Topic都存储在这个表中
- activemq_lock:用于存储消息,Queue和Topic都存储在这个表中
- activemq_msgs:在集群环境中才有用,只有一个Broker可以获得消息,称为Master Broker,
其他的只能作为备份等待Master Broker不可用,才可能成为下一个Master Broker。
这个表用于记录哪个Broker是当前的Master Broker
注意:activemq不支持持久化订阅者有多消费