四 ActiveMQ消息持久化与配置
一、ActiveMQ 消息持久化
1、新建数据库
首先我们先新建一个mysql数据库,并把所有权限赋给新建用户,用户需要在建表的权限
1 |
|
2、配置数据源
在ActiveMQ目录中找到conf/activemq.xml 文件。
ActiveMQ默认使用的是kahadb 我们在xml中修改成使用mysql
在文件中找到:
1 | <persistenceAdapter> |
把它注释掉,添加mysql的配置
1 | <persistenceAdapter> |
在</broker>后面添加数据源的配置
1 | <!-- MySQL DataSource --> |
这里的ID对应的就是我们上面配置的ID。
最后,我们需要把mysql的jar包复制到ActiveMQ目录中的lib目录下,
接着重新启动ActiveMQ,这时它会自动在数据库中生成三张表
我们可以用上一篇文章写的代码做测试,发布的消息会被存储在mysql数据库中,被消费后会自动删除。
二、ActiveMQ配置
在第二篇文章中,我人提到ActiveMQ管理页面的登陆用户与密码默认是admin/admin。这个默认的用户与密码在正式环境中肯定是需要修改的。
1、ActiveMQ管理页面登陆配置
我们找到ActiveMQ目录中的 conf/jetty-realm.properties
可以看到配置了两个用户,admin与user。
配置的格式为:
用户名:密码,用户角色
这里我们修改一下admin用户的密码,重新启动ActiveMQ,打开管理员后台http://localhost:8161/admin
弹出的登陆框中需要输入我们新设置的用户与密码才能登陆了。
2、ActiveMQ连接开启密码认证
**第一步:**找到 ActiveMQ目录中的conf/credentials.properties
这里配置的是连接的用户与密码,我们可以把密码修改成123456。
第二步:找到activemq/conf/activemq.xml
在systemUsage 后面添加一个插件
1 | <plugins> |
位置如图:
最后重启ActiveMQ ,如果我们还用前面的代码去连接ActiveMQ 会提示用户或密码无效。我们需要修改代码中的连接工厂内容。
在实例化工厂时传入我们修改后的用户与密码
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory("system","123456",JMSProducer.URL);
重新启动程序即可连接成功。
这样我们就实现了密码认证连接ActiveMQ。