tutorial start kafka instalar como activemq

start - ¿Para qué se usa ActiveMQ?



activemq vs rabbitmq (7)

Active MQ tiene una gran compatibilidad con el programador, lo que significa que puede programar su mensaje para entregarlo en un momento determinado. Hemos utilizado esta función para enviar recordatorios de medicamentos al paciente que carga los detalles de sus medicamentos en un escenario de atención médica.

Lo busqué y me enviaste mensajes. ¿Pero por qué? ¿Por qué no usarías una base de datos? Debe haber una característica que ActiveMQ no tenga en las bases de datos?


ActiveMQ, o en general, todas las implementaciones de middleware orientado a mensajes (MOM) están diseñadas con el propósito de enviar mensajes entre dos aplicaciones, o dos componentes dentro de una aplicación.

Esencialmente, MOM y las bases de datos comparten una base común, ya que proporcionan almacenamiento de datos transaccional y persistente para que puedan leer y escribir. La gran diferencia es el patrón de uso: cuando las bases de datos son muy genéricas y están optimizadas para realizar búsquedas complejas en múltiples tablas, MOM está optimizado para leer mensajes, uno a la vez, de manera similar a FIFO.

JMS, que es una API que ActiveMQ implementa, es una piedra angular en las aplicaciones Java Enterprise. Esto hace que los mensajes compartan un formato y una semántica bastante comunes, lo que facilita la integración entre diferentes aplicaciones.

Por supuesto, hay muchas más características detalladas que están solo en ActiveMQ, protocolos de cable como OpenWire, STOMP y MQTT, JMS, EIP junto con Apache Camel, patrones de mensaje como "solicitud / respuesta" y "publicar / suscribir", JMS Bridging, clustering ("network of brokers"), que permite escala y distribuciones, etc. Debe leer un poco sobre estos temas, si está interesado, ya que son bastante grandes.


Con RDBMS, cuando procesa una fila de datos, normalmente actualiza un indicador que indica que la fila se ha procesado para que el proceso no se repita.

Sin embargo, con Message Queue, solo debe acusar recibo de un mensaje y el próximo consumidor procesará el siguiente.

La diferencia es que el estado de UPDATE en un RDBMS es una operación realmente lenta en comparación con el acknowlege en activmeq.


De Wikipedia

Apache ActiveMQ es un intermediario de mensajes de código abierto escrito en Java junto con un cliente completo de Servicios de mensajes Java (JMS). Proporciona "Características de la empresa", que en este caso significa fomentar la comunicación de más de un cliente o servidor

En cuanto a tus consultas:

¿Por qué no usarías una base de datos?

Debe usar la base de datos para datos persistentes y no para datos temporales. Supongamos que debe enviar un mensaje del remitente al destinatario. Al recibir el mensaje, Receiver ejecuta una operación (recibir, procesar y olvidar). Después de procesar ese mensaje, no necesita ese mensaje en absoluto. En este caso, almacenar el mensaje en una base de datos persistente no es una solución correcta.

Estoy completamente de acuerdo con la respuesta de @Hiram Chirino con respecto a la inserción y eliminación de mensajes en la base de datos si usa la base de datos en lugar del sistema de mensajes.

Beneficios de este article y este article

  1. Integración empresarial : permitir que las aplicaciones creadas con diferentes idiomas y en diferentes sistemas operativos se integren entre sí
  2. Transparencia de ubicación : las aplicaciones de los clientes no necesitan saber dónde se encuentran las aplicaciones de servicio
  3. Comunicación confiable : los productores / consumidores de mensajes no tienen que estar disponibles al mismo tiempo
  4. Escala : puede escalar horizontalmente agregando más servicios
  5. Comunicación asíncrona : un cliente puede disparar un mensaje y continuar con otro procesamiento en lugar de bloquear hasta que el servicio haya enviado una respuesta;
  6. Acoplamiento reducido : las suposiciones hechas por los clientes y los servicios se reducen en gran medida como resultado de los 5 beneficios anteriores. Un servicio puede cambiar detalles sobre sí mismo, incluida su ubicación, protocolo y disponibilidad, sin afectar o interrumpir al cliente.

Debe haber una característica que ActiveMQ no tenga en las bases de datos?

Hay muchos. Eche un vistazo a la página de documentation para más detalles. Echa un vistazo a use-cases también.

Eche un vistazo a esta presentation para comprender los aspectos internos de ActiveMQ.


Se usa para comunicar confiablemente entre dos procesos distribuidos. Sí, podría almacenar mensajes en una base de datos para comunicarse entre dos procesos, pero, tan pronto como se reciba el mensaje, deberá eliminar el mensaje. Eso significa una inserción de fila y eliminar para cada mensaje. Cuando intenta ampliar esa cantidad comunicando miles de mensajes por segundo, las bases de datos tienden a caerse.

Por otro lado, los middle-ware orientados a mensajes como ActiveMQ se construyen para manejar esos casos de uso. Suponen que los mensajes en un sistema saludable se eliminarán muy rápidamente y pueden hacer optimizaciones para evitar la sobrecarga. También puede enviar mensajes a los consumidores en lugar de que un consumidor tenga que buscar nuevos mensajes haciendo una consulta SQL. Esto reduce aún más la latencia involucrada en el procesamiento de nuevos mensajes que se envían al sistema.


Supongamos que tiene una aplicación que se usa en varias ubicaciones al mismo tiempo. Supongamos también que su aplicación tiene que manejar miles de solicitudes por minuto o algo así para que las operaciones normales de db no puedan manejar tales operaciones, Activemq actúa como el procesamiento de mensajes que lleva todos los mensajes a la cola, incluso si una de sus aplicaciones falla en una ubicación la otra ubicación no se verá afectada.


me gustaría enfatizar lo siguiente:

Desacoplado : los sistemas pueden comunicarse sin estar conectados. La cola se encuentra entre sistemas, una falla del sistema nunca afectará a otra ya que la comunicación se realiza a través de Queue. Los sistemas continúan funcionando cuando están funcionando.

Soporte de recuperación : los mensajes en colas persisten. Los mensajes se pueden restaurar más tarde si falla la cola.

Comunicación confiable : considere un sistema que procesa las solicitudes de los clientes. En casos normales, el sistema recibe 100 solicitudes por minuto. Este sistema no es confiable cuando el número de solicitudes va más allá del promedio. En tal caso, Queue puede gestionar solicitudes y puede enviar mensajes periódicamente en función del rendimiento del sistema sin romperlo.

Asíncrono : la comunicación del servidor de cliente no es bloqueante. Una vez que el cliente envía la solicitud al servidor, puede hacer otras operaciones sin esperar respuesta. Cuando la respuesta que recibió el cliente puede manejarlo en cualquier momento.