centos7安装activemq

发布时间 2023-11-22 12:59:14作者: 俟礼

1 下载安装包
activemq官网:https://activemq.apache.org/
自从ActiveMQ5.17.0版本开始,要使用java11+版本,所以我这里用5.16.6版本,支持java8版本,参考本教程之前,请确保已经安装java环境。
版本为:activemq5.16.6

wget https://archive.apache.org/dist/activemq/5.16.6/apache-activemq-5.16.6-bin.tar.gz
# 解压
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

登录完成之后看到以下页面,代表登录成功。
image

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 编辑配置文件,不用KahaDB持久化
编辑conf/activemq.xml文件,注释persistenceAdapter标签,改用mysql持久化,不用KahaDB持久化,注释之后添加以下配置

<persistenceAdapter>  
    <jdbcPersistenceAdapter dataSource="#mysql-ds" /> 
</persistenceAdapter>

配置mysql数据源,注意:mysql连接中的&要用&amp占位符代替,配置要在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&amp;characterEncoding=utf8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false&amp;serverTimezone=GMT%2B8&amp;relaxAutoCommit=true"/> 
    <property name="username" value="root"/> 
    <property name="password" value="12345678"/> 
    <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不支持持久化订阅者有多消费