Apache RocketMQ es un Bus de mensajería Open Source pensado con estos objetivos:

• High availability

• Low Latency Messaging

• At least once

• Message Index

• Massive Accumulation

• Order Message

• Transactional Message

• Scheduled Message

• SQL Filter

• Batch Produce

• LogAppender Support

En esta página sus creadores explican cómo surgió…no les valía ni ActiveMQ ni Kafka, por lo que decidieron crear un nuevo motor de mensajería: https://rocketmq.apache.org/docs/motivation/

“Based on our research, with increased queues and virtual topics in use, ActiveMQ IO module reaches a bottleneck. We tried our best to solve this problem through throttling, circuit breaker or degradation, but it did not work well. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements especially in terms of low latency and high reliability”.

A la hora de compararlo indican:

RocketMQ tiene una version commercial y es una de las tecnologías base de Alibaba Cloud Platform.

Los conceptos de RocketMQ son muy parecidos a lso de Kafka.

RocketMQ se compone de un NameServer, un Broker y Producers y Consumers, conforme esta arquitectura:

Una de sus funcionalidades más interesantes es que permite subscribirse con filtros escritos en un pseudo-SQL:

Además de su LogAppender para Log4j y Logback:

https://rocketmq.apache.org/docs/logappender-example/

Además soporta Transacciones, Batchs y Broadcasting.

Como estándar de comunicación permite usar OpenMessaging que es un estándar abierto neutral para mensajería distribuida que además puede conectarse con protocolos como MQTT o AMQP.

https://rocketmq.apache.org/docs/openmessaging-example/