20181104-訊息中介軟體(一)-ActiveMQ安全認證和持久化
阿新 • • 發佈:2018-12-19
一、ActiveMQ安全認證
1.在conf/activemq.xml中開啟認證,即在broker標籤中新增以下程式碼
<plugins> <!-- use JAAS to authenticate using the login.config file on the classpath to configure JAAS --> <!-- 新增jaas認證外掛activemq在login.config裡面定義,詳細見login.config--> <jaasAuthenticationPlugin configuration="activemq" /> <!-- lets configure a destination based authorization mechanism --> <authorizationPlugin> <map> <authorizationMap> <authorizationEntries> # "admins"表示使用者組 <authorizationEntry topic=">" read="admins" write="admins" admin="admins" /> #“>”表示所有的topic,只要是用topic都要做安全認證。 <authorizationEntry queue=">" read="admins" write="admins" admin="admins" /> <!--authorizationEntry topic="FirstTopic" read="smeall,smeadmin" write="smeadmin" admin="smeall,smeadmin" /--> <authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/> <authorizationEntry queue="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/> </authorizationEntries> </authorizationMap> </map> </authorizationPlugin> </plugins>
2.認證啟動後,認證使用的使用者資訊在conf/login.config中配置,配置使用者組資訊
#使用者組名=使用者名稱(多使用者用逗號隔開),使用者組名在conf/acticemq.xml配置檔案中配置,密碼在user.properties中配置
admins=admin
3.配置使用者密碼,在conf/user.properties中配置
#使用者名稱=密碼
admin=admin
4.注意的是:在5.14.5版本下,組的配置和用賬號/密碼的配置分別在groups.properties和users.priperties中,而在login.config檔案中配置的則是指向這兩個配置檔案的資訊
activemq {
org.apache.activemq.jaas.PropertiesLoginModule required
org.apache.activemq.jaas.properties.user="users.properties"
org.apache.activemq.jaas.properties.group="groups.properties";
};
二、activeMQ的持久化 ActiveMQ中,持久化是指對訊息資料的持久化。在ActiveMQ中,預設的訊息是儲存在記憶體中。當記憶體容量不足時候,或者ActiveMQ正常關閉的時候,會見記憶體中的未處理的訊息持久化到磁碟中,具體的持久化策略又配置檔案中的具體配置決定。 ActiveMQ的預設儲存策略是kahadb。如果使用JDBC作為持久化策略,則會將所有需要持久化的訊息儲存到資料庫中。 所有的持久化配置都在cong/activemq.xml
1.kahadb方式 是activeMQ預設的持久化策略,kahadb是一個檔案型資料庫,是使用內岑+檔案保證資料的持久化。
<persistenceAdapter>
<!-- director:儲存資料的目錄;journalMaxFileLength:儲存訊息的檔案大小 -->
<kahaDB directory="${activemq.data}/kahadb" journalMaxFileLength=“16mb”/>
</persistenceAdapter>
特性是:1、日誌形式儲存訊息;2、訊息索引以B-Tree結構儲存,可以快速更新;3、完全支援JMS事務;4、支援多種恢復機制;
2.jdbc持久化方式 在broker節點中配置
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mySql" createTablesOnStartup="false"/>
</persistenceAdapter>
配置mysql資料來源節點,寫在broker標籤之外
<!--MySQL DataSource -->
<beanid="mySql" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url"value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/> #此處不寫埠號
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>