certificación de seguridad ActiveMQ y persistencia

1 certificación de seguridad

ActiveMQProporciona la certificación de seguridad. Es 用户名密码登录规则. ActiveMQSi necesita utilizar la autenticación segura, debe estar en activemqel 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.xmlarchivo de configuración brokerpestaña Matemáticas:

  • <jaasAuthenticationPlugin configuration="activemq" />Especifica el uso de JAASplug-in de la autoridad de gestión, tal como configuration="activemq"se login.confdefine en el archivo
  • <authorizationEntry topic="名字" read="用户组名" write="用户组名" admin="用户组名"/>Designada específica Topic/Queuerelació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";
};

userEn nombre de la información de perfil de usuario, groupen 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 guestcuando 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

ActiveMQEn persistencia se refiere a la persistencia de los datos del mensaje. En ActiveMQel mensaje por defecto se almacena en la memoria. Cuando la capacidad de la memoria es insuficiente, o ActiveMQse 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
ActiveMQla política de almacenamiento por defecto es kahadb. Si utiliza JDBCuna política persistente, tendrá que guardar todos los mensajes persistentes a la base de datos.
Todas las configuraciones son persistentes en conf/activemq.xmlla configuración, la información de configuración se brokerdefine (agente) etiqueta dentro.

2.1 manera kahadb

kahadbModo es ActiveMQla estrategia de persistencia predeterminado. kahadbSe trata de una base de datos documental.
El uso de 内存+文件los datos de aseguramiento persistente. kahadbPuede 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-Treealmacenamiento de la estructura, se puede actualizar rápidamente;
  • Totalmente compatible con JMSla transacción;
  • Soporte para múltiples mecanismos de recuperación;

2,2 manera AMQ

AMQSólo está disponible para 5.3las versiones anteriores.
AMQEs 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>

AMQventajas:

  • Rendimiento que JDBCal 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.
    AMQdesventajas:
  • AMQ MessageCada uno será para Destinationcrear un índice, si se utiliza una gran cantidad Queue, 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( ActiveMQejemplos de aplicación) colapso, la velocidad de volver a clasificar va a ser muy lento.
  • Aunque AMQel rendimiento ligeramente superior Kaha DBmanera, 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

ActiveMQLos datos se persistió a la base de datos. Sin especificar una base de datos. Se puede utilizar cualquier base de datos.
Utilizando la siguiente MySQLbase de datos como ejemplo
los siguientes documentos activemq.xmlparte de perfil

  • En primer lugar, una definición de mysql-dsla MySQLfuente de datos, y luego <broker>la etiqueta persistenceAdapterde la configuración de los nodos jdbcPersistenceAdaptery las referencias de origen de datos se acaba de definir.
  • dataSourceEspecifica la base de datos de persistencia bean, createTablesOnStartupsi desea crear tablas de datos en el arranque, el valor por defecto es true, 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 set true, después del cambio false, si quieres repetidamente reinicio, a continuación, será cambiadofalse
  • En la <broker>configuración fuera de la etiqueta <bean>etiqueta
  • En activemqel libdirectorio 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 ActiveMQse pueden crear automáticamente.
activemq_msgsPara el almacenamiento de mensajes, Queuey Topicse almacenan en esta tabla:

  • ID: Incremento de una clave primaria de base de datos
  • CONTAINER: Noticias Destination
  • MSGID_PROD: La clave principal mensaje del cliente remitente
  • MSG_SEQ: Es el fin de la transmisión del mensaje, MSGID_PROD+MSG_SEQpuede estar compuesto JMSdeMessageID
  • EXPIRATION: Tiempo de expiración del mensaje, desde el almacenado 1970-01-01número de milisegundos ahora
  • MSG: El cuerpo del mensaje Javade datos binarios objetos de la secuencia
  • PRIORITY: Prioridad, el 0-9mayor es el valor, mayor será la prioridad

activemq_acksPara 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á utilizando Staticun clúster, el clúster campo de información de otros sistemas
  • CLIENT_ID: Cada abonado debe tener un único cliente IDpara distinguir
  • SUB_NAME: Nombre del suscriptor
  • SELECTOR: 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 atributos ANDy ORoperación
  • LAST_ACKED_ID: Grabar un mensaje al consumidor ID.

Tabla activemq_lockpara ser útil en un entorno agrupado, sólo uno Brokerpuede obtener el mensaje, llamada Master Broker, espera para el otro sólo como una copia de seguridad Master Brokerno está disponible, puede ser el siguiente Master Broker. Esta tabla se utiliza para grabar lo que Brokerestá al día Master Broker.
Sólo los mensajes deben asegurar eficaz y no debe perder el tiempo. Utilice JDBCla 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 levelDBoKahadb

Publicados 334 artículos originales · ganado elogios 186 · vistas 310 000 +

Supongo que te gusta

Origin blog.csdn.net/u012060033/article/details/104669297
Recomendado
Clasificación