Protocolo de transmisión ActiveMQ
Protocolos de red compatibles con ActiveMQ
Configuración diferente, el rendimiento de MQ es diferente
Visite el sitio web oficial: https://activemq.apache.org/connectivity
(1) Protocolo de control de transmisión (TCP) - 默认
1. Esta es la configuración predeterminada del Broker. El cliente TCP escucha en el puerto 616162. Antes de que los datos se transmitan a través de la red, los datos deben serializarse. El mensaje se serializa en un flujo de bytes a través de un protocolo de cable.
2. De forma predeterminada, ActiveMQ llama al protocolo de cable OpenWire y su propósito es promover la eficiencia y la interacción rápida de datos en la red.
3. La forma URI de la conexión TCP es como: tcp: // nombre de host: puerto? key = value & key = value, los siguientes parámetros son opcionales
4. Ventajas de la transmisión TCP:
(4.1) La transmisión del protocolo TCP tiene una alta confiabilidad y una gran estabilidad.(4.2) Alta eficiencia: transmisión de flujo de bytes, alta eficiencia
(4.3) Efectividad y usabilidad: amplia aplicación, compatible con cualquier plataforma5. Para conocer los parámetros configurables del protocolo de transporte, consulte el sitio web oficial: http://activemq.apache.org/configuring-version-5-transports.html
2) Nuevo protocolo API de E / S (NIO)
Los protocolos de comunicación cliente-intermediario admitidos por ActiveMQ son: TCP, NIO, UDP, SSL, Http (s), VM.
El archivo para configurar el conector de transporte se encuentra en la etiqueta <transportConnectors> en conf / activemq.xml del directorio de instalación de activeMQ.
1. El protocolo NIO es similar al protocolo TCP, pero NIO se centra más en las operaciones de acceso subyacentes. Permite a los desarrolladores tener más llamadas de cliente y llamadas del lado del servidor al mismo recurso.
Carga pesada
2. Escenarios adecuados para utilizar el protocolo NIO:
(2.1) Puede haber una gran cantidad de Clientes para conectarse al Broker. En general, una gran cantidad de Clientes para conectarse al Broker está restringida por los subprocesos del sistema operativo. Por lo tanto, la implementación de NIO requiere menos subprocesos para ejecutarse que TCP, por lo que se recomienda utilizar el protocolo NIO
(2.2) Puede haber una transmisión de red muy lenta para Broker, NIO proporciona un mejor rendimiento que TCP.
3. La forma URI de la conexión NIO: nio / hostname: port? Key = value
4. Ejemplo de configuración del conector de transporte, consulte el sitio web oficial:
http://activemq.apache.org/configuring-version-5-transports.html
El transporte NIO
Igual que el transporte TCP, excepto que se utiliza el paquete New / O (NIO), que puede proporcionar un mejor rendimiento. El paquete Java NIO no debe confundirse con el paquete AlO4J de IBM.
Para cambiar de TCP a Nlo, simplemente cambie la parte del esquema de la URl. A continuación, se muestra un ejemplo definido en el archivo de configuración XML de un corredor.
<broker> ... <transportConnectors> <transportConnector name="nio" uri="nio://0.0.0.0:61616"/> </<transportConnectors> ... </broker>
3) protocolo AMQP
Es decir, el Protocolo de cola de mensajes avanzado, un protocolo de cola de mensajes avanzado estándar de la capa de aplicación que proporciona servicios de mensajería unificada, es un desarrollo del protocolo de la capa de aplicación.
Estándares de lanzamiento, diseñados para middleware orientado a mensajes. Los clientes y el middleware de mensajes basados en este protocolo pueden transmitir mensajes y no se ven afectados por los diferentes productos de cliente / middleware.
Restricciones en el desarrollo del lenguaje y otras condiciones.
ActiveMQ admite el protocolo AMQP 1.0, que es un estándar OASIS.
Disponibilidad
Disponible a partir de la versión 5.8 de ActiveMQ.
Habilitación del agente de ActiveMQ para AMQP
Para habilitar la compatibilidad con el protocolo AMQP en el agente, agregue la siguiente configuración del conector de transporte que hace referencia al esquema amqp en su URL:
<transportConnectors> <transportconnector name="amqp"uri="amqp://0.0.0.0:5672"/> </transportConnectors>
Está habilitado en la configuración predeterminada del servidor ActiveMQ. Para obtener más ayuda, consulte Ejecutar Broker.
(4) protocolo MQTT
MQTT (Message Queue Server Telemetry Transport) es un protocolo de mensajería instantánea desarrollado por IBM, que puede convertirse en el Internet de las cosas.
partes importantes de. El protocolo es compatible con todas las plataformas y puede conectar casi todos los elementos en red al exterior, y se puede utilizar como sensores y actuadores (como comunicaciones
El protocolo de comunicación de las casas de conexión a través de Twitter).
Demasiado perezoso para leer la versión oficial del sitio web: https://s2.ax1x.com/2019/08/29/mL4W38.png
Habilitación de ActiveMQ Broker para MQTT
Es muy fácil habilitar ActiveMQ para MQTT. Simplemente agregue un conector al corredor usando la URL de MQTT.
<transportConnectors> <transportConnector name="mqtt" uri="mqtt://localhost:1883"/> </transportConnectors>
(5) Protocolo de capa de sockets seguros (SSL)
Forma URL de conexión: ssl: // nombre de host: puerto? clave = valor
2. Ejemplo de configuración del conector de transporte:
<transportConnectors> <transportConnector name="ssl" uri="ssl://localhost:61618?trace=true"/> </transportConnectors>
6) acuerdo STORM
STOMP, Streaming Text Orientated Message Protocol, es un Streaming Text Orientated Message Protocol, una especie de Message Oriented Message Protocol (MOM).
Middleware, un protocolo de texto simple diseñado por middleware orientado a mensajes.
Visite el sitio web oficial: https://activemq.apache.org/stomp
(7) Protocolo WebSocket-ws
O visite el café web oficial: https://activemq.apache.org/websockets
2.3, mejora del rendimiento de NIO
(1) Después de configurar NIO, el rendimiento debería ser correcto. ¿Hay alguna optimización adicional?
El encabezado del formato URI comienza con "nio", lo que indica que este puerto utiliza el modelo de E / S de red NIO basado en el protocolo TCP. Pero este método de configuración solo puede hacer que este final
El puerto admite el protocolo Openwire. ¿Cómo hacer que este puerto admita el modelo de E / S de red NIO y que admita múltiples protocolos?
(2) Utilice la palabra clave auto
Sigue siendo el sitio web oficial para visitar: https://activemq.apache.org/auto
Habilitación de AUTO sobre NIO
Para configurar la detección automática de formato de cable de ActiveMQ a través de una conexión NIO TCP, utilice el prefijo de transporte auto + nio. Por ejemplo, agregue la siguiente configuración de transporte en su archivo XML:
3) Utilice el símbolo "+" para establecer varias características para el puerto
Si no especifica los puertos de escucha de red de ActiveMQ, estos puertos utilizarán el modelo de E / S de red BIO. (OpenWire, STOMP, AMQP ..
…)
Entonces, para mejorar el rendimiento de la red de un solo nodo primero, necesito especificar claramente el modelo de E / S de red activa, como se muestra a continuación: El encabezado del formato URI comienza con "nio", tabla
Muestra que este puerto utiliza el modelo de E / S de red NIO basado en el protocolo TCP.