ActiveMQ開啟使用者認證及訊息持久化到資料庫功能
阿新 • • 發佈:2019-01-04
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