1. 程式人生 > >20181104-訊息中介軟體(一)-ActiveMQ安全認證和持久化

20181104-訊息中介軟體(一)-ActiveMQ安全認證和持久化

一、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>

在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述