ActiveMQ开启用户认证及消息持久化到数据库功能
Posted 大扑棱蛾子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActiveMQ开启用户认证及消息持久化到数据库功能相关的知识,希望对你有一定的参考价值。
1、开启用户认证机制
ActiveMQ默认是不开启用户认证机制的,如果需要开启则需要修改配置。
1. 首先打开activemq.xml,在broker下增加
<plugins>
<jaasAuthenticationPlugin configuration="activemq" />
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
<authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
authorizationEntry中配置队列(queue)或主题(topic)的read、write、admin分别需要什么角色。>
表示统配。
2. 修改login.conf
activemq
org.apache.activemq.jaas.PropertiesLoginModule required
org.apache.activemq.jaas.properties.user="users.properties"
org.apache.activemq.jaas.properties.group="groups.properties";
;
这里的activemq 要与<jaasAuthenticationPlugin configuration="activemq" />
中configuration的值保持一致。
3. 修改users.properties
admin=admin
前面是用户名后面是密码
4. 修改groups.properties
admins=admin
前面是组名,后面是用户列表。多个用户之间用逗号分隔。
将消息持久化到数据库中
首先需要将mysql驱动、commons-dbcp、commons-pool这三个jar包放到activemq的lib目录下。
修改activemq.xml
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="$activemq.base/data" dataSource="#mysql-ds" useDatabaseLock="false"/>
</persistenceAdapter>
在broker外配置
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.1.202:3306/activemq?relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
然后创建数据库activemq。
修改mysql配置
[mysqld]
binlog_format=mixed
以上是关于ActiveMQ开启用户认证及消息持久化到数据库功能的主要内容,如果未能解决你的问题,请参考以下文章