ActiveMQ开启用户认证及消息持久化到数据库功能

    xiaoxiao2021-04-19  80

    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
    转载请注明原文地址: https://ju.6miu.com/read-675683.html

    最新回复(0)