1. 程式人生 > >ActiveMQ開啟使用者認證及訊息持久化到資料庫功能

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