Directorio artículo
1 certificación de seguridad
ActiveMQ
Proporciona la certificación de seguridad. Es 用户名密码登录规则
. ActiveMQ
Si necesita utilizar la autenticación segura, debe estar en activemq
el archivo de configuración de núcleo de configuración de seguridad abierta.
1.1 añadir plug-ins
El archivo de configuración está conf/activemq.xml
en el conf/activemq.xml
archivo de configuración broker
pestaña Matemáticas:
<jaasAuthenticationPlugin configuration="activemq" />
Especifica el uso deJAAS
plug-in de la autoridad de gestión, tal comoconfiguration="activemq"
selogin.conf
define en el archivo<authorizationEntry topic="名字" read="用户组名" write="用户组名" admin="用户组名"/>
Designada específicaTopic/Queue
relación de licencia con un grupo de usuarios<authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>
Esta configuración es necesaria, no menos
<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>
<!-- 这里面的大于号是指所有的连接,不管是consumer还是provider都需要认证,其后是 读写管理的权限,其中 admins是用户组的名字 -->
<authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
<authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
<!-- 此处的ActiveMQ.Advisory.>大于号之前是指的系统级别的 -->
<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>
1.2 Configuración adicional
Cuando se activa la autenticación, la autenticación del usuario mediante la información proporcionada por otros archivos de configuración:conf/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";
};
user
En nombre de la información de perfil de usuario, group
en nombre del archivo de configuración del grupo de usuarios. Dirigiéndose ruta es relativa al perfil actual, donde la dirección de inicio.
conf/users.properties
#用户名=密码
admin=admin
conf/groups.properties
#用户组名=用户名, 用户名(多个用户名用逗号分隔开来)
admins=admin
1.3 efecto abierto
Debido a que sólo configurado admin
, por lo que cuando guest
cuando java中
no se puede acceder al servidor a través del usuario, incluso si la visita es sólo con la administración de sitios Web admin
, en lugar de utilizarguest
2 ActiveMQ persistencia
ActiveMQ
En persistencia se refiere a la persistencia de los datos del mensaje. En ActiveMQ
el mensaje por defecto se almacena en la memoria. Cuando la capacidad de la memoria es insuficiente, o ActiveMQ
se cierra, será en la memoria de mensajes no procesados persistido en el disco.
estrategia específica persistencia es determinado por el archivo de configuración específico para configurar
ActiveMQ
la política de almacenamiento por defecto es kahadb
. Si utiliza JDBC
una política persistente, tendrá que guardar todos los mensajes persistentes a la base de datos.
Todas las configuraciones son persistentes en conf/activemq.xml
la configuración, la información de configuración se broker
define (agente) etiqueta dentro.
2.1 manera kahadb
kahadb
Modo es ActiveMQ
la estrategia de persistencia predeterminado. kahadb
Se trata de una base de datos documental.
El uso de 内存+文件
los datos de aseguramiento persistente. kahadb
Puede limitar el tamaño de cada archivo de datos. No representa la capacidad total de los datos.
<persistenceAdapter>
<!-- directory:保存数据的目录; journalMaxFileLength:保存消息的文件大小 -->
<kahaDB directory="${activemq.data}/kahadb" journalMaxFileLength="16mb"/>
</persistenceAdapter>
Las características son:
- mensajes de registro se almacenan;
- En Mensajes de
B-Tree
almacenamiento de la estructura, se puede actualizar rápidamente; - Totalmente compatible con
JMS
la transacción; - Soporte para múltiples mecanismos de recuperación;
2,2 manera AMQ
AMQ
Sólo está disponible para 5.3
las versiones anteriores.
AMQ
Es un archivo de base de datos, la información del mensaje se almacena en última instancia en un archivo. Habrá caché de datos en memoria.
<persistenceAdapter>
<!-- directory:保存数据的目录 ; maxFileLength:保存消息的文件大小 -->
<amqPersistenceAdapter directory="${activemq.data}/amq" maxFileLength="32mb"/>
</persistenceAdapter>
AMQ
ventajas:
- Rendimiento que
JDBC
al escribir un mensaje, el mensaje se escribe en el archivo de registro, porque está escrito añadieron secuencialmente, de alto rendimiento. Para mejorar el rendimiento, crear消息主键索引
y proporcionar mecanismo de caché para mejorar aún más el rendimiento. - El tamaño de cada archivo de registro está limitado (por defecto
32m
, puede ser configurable). Cuando hay más de este tamaño, el sistema volverá a establecer un archivo. Cuando se haya completado todo el consumo de mensajes, el sistema eliminará el archivo o archivo.
AMQ
desventajas: AMQ Message
Cada uno será paraDestination
crear un índice, si se utiliza una gran cantidadQueue
, el tamaño de archivo de índice se llevará una gran cantidad de espacio en disco.- Debido a la enorme índice y una vez
Broker
(ActiveMQ
ejemplos de aplicación) colapso, la velocidad de volver a clasificar va a ser muy lento. - Aunque
AMQ
el rendimiento ligeramente superiorKaha DB
manera, sino porque se tarda demasiado tiempo para reconstruir el índice, pero los archivos de índice ocupa demasiado espacio en el disco, que ya no se recomienda.
2.3 JDBC de forma persistente
ActiveMQ
Los datos se persistió a la base de datos. Sin especificar una base de datos. Se puede utilizar cualquier base de datos.
Utilizando la siguiente MySQL
base de datos como ejemplo
los siguientes documentos activemq.xml
parte de perfil
- En primer lugar, una definición de
mysql-ds
laMySQL
fuente de datos, y luego<broker>
la etiquetapersistenceAdapter
de la configuración de los nodosjdbcPersistenceAdapter
y las referencias de origen de datos se acaba de definir. dataSource
Especifica la base de datos de persistenciabean
,createTablesOnStartup
si desea crear tablas de datos en el arranque, el valor por defecto estrue
, por lo que cada vez que se inicia irá para crear una tabla de datos, y por lo general es hora de empezar el primer settrue
, después del cambiofalse
, si quieres repetidamente reinicio, a continuación, será cambiadofalse
- En la
<broker>
configuración fuera de la etiqueta<bean>
etiqueta - En
activemq
ellib
directorio de aumentar la conexión con la base de datosjar包
<broker brokerName="test-broker" persistent="true" xmlns="http://activemq.apache.org/schema/core">
<persistenceAdapter>
<!-- 此处的true或false要特别注意 -->
<jdbcPersistenceAdapter dataSource="#mysql-ds" createTablesOnStartup="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://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
Después de la configuración con éxito, es necesario crear la base de datos correspondiente database
, de otro modo inaccesibles. Tablas ActiveMQ
se pueden crear automáticamente.
activemq_msgs
Para el almacenamiento de mensajes, Queue
y Topic
se almacenan en esta tabla:
ID
: Incremento de una clave primaria de base de datosCONTAINER
: NoticiasDestination
MSGID_PROD
: La clave principal mensaje del cliente remitenteMSG_SEQ
: Es el fin de la transmisión del mensaje,MSGID_PROD+MSG_SEQ
puede estar compuestoJMS
deMessageID
EXPIRATION
: Tiempo de expiración del mensaje, desde el almacenado1970-01-01
número de milisegundos ahoraMSG
: El cuerpo del mensajeJava
de datos binarios objetos de la secuenciaPRIORITY
: Prioridad, el0-9
mayor es el valor, mayor será la prioridad
activemq_acks
Para el almacenamiento de la relación de suscripción. Si usted es persistente Topic
, la relación entre el abonado y el servidor de suscripción en esta tabla contiene:
los principales campos de la base son los siguientes:
CONTAINER
: NoticiasDestination
SUB_DEST
: Si está utilizandoStatic
un clúster, el clúster campo de información de otros sistemasCLIENT_ID
: Cada abonado debe tener un único clienteID
para distinguirSUB_NAME
: Nombre del suscriptorSELECTOR
: Seleccionar, sólo se puede seleccionar el consumidor para satisfacer las condiciones del mensaje. Las condiciones pueden ser realizados con una propiedad personalizada, puede soportar múltiples atributosAND
yOR
operaciónLAST_ACKED_ID
: Grabar un mensaje al consumidorID
.
Tabla activemq_lock
para ser útil en un entorno agrupado, sólo uno Broker
puede obtener el mensaje, llamada Master Broker
, espera para el otro sólo como una copia de seguridad Master Broker
no está disponible, puede ser el siguiente Master Broker
. Esta tabla se utiliza para grabar lo que Broker
está al día Master Broker
.
Sólo los mensajes deben asegurar eficaz y no debe perder el tiempo. Utilice JDBC
la política de almacenamiento.
Si un mensaje se puede tolerar la pérdida, o el uso de modo de clúster / en espera para garantizar la seguridad de datos cuando el uso recomendado levelDB
oKahadb