Comparação entre Kafka, RabbitMQ e RocketMQ
Recurso |
RocketMQ |
Kafka |
RabbitMQ |
---|---|---|---|
Fila de prioridade |
Não compatível |
Não compatível |
Compatível. Recomenda-se que a prioridade seja definida como 0–10. |
Fila atrasada |
Compatível |
Não compatível |
Compatível |
Fila de mensagens mortas |
Compatível |
Não compatível |
Compatível |
Repetição de mensagem |
Compatível |
Não compatível |
Não compatível |
Modo de recuperação |
Baseado em pull e baseado em push |
Baseado em pull |
Baseado em pull e baseado em push |
Transmissão de mensagens |
Compatível |
Compatível |
Compatível |
Rastreamento de mensagens |
Compatível |
Suporta rastreamento de deslocamento e carimbo de data/hora. |
Não compatível. Uma vez que uma recuperação de mensagem tenha sido confirmada, o RabbitMQ será notificado de que a mensagem pode ser excluída. |
Acumulação de mensagens |
Compatível |
Suporta maior desempenho de acumulação do que o RabbitMQ graças ao alto rendimento. |
Compatível |
Persistência |
Compatível |
Compatível |
Compatível |
Rastreamento de mensagens |
Compatível |
Não compatível |
Suportado pelo recurso firehose ou pelo plug-in rabbitmq_tracing. No entanto, o rabbitmq_tracing reduz o desempenho e deve ser usado apenas para a solução de problemas. |
Filtragem de mensagens |
Compatível |
Compatível |
Não compatível, mas pode ser encapsulado. |
Multilocatário |
Compatível |
Não compatível |
Compatível |
Multiprotocolo |
Compatível com RocketMQ. |
Suporta apenas o Apache de Kafka. |
O RabbitMQ é baseado no AMQP e suporta MQTT e STOMP. |
Multilíngue |
Suporta clientes em várias linguagens de programação. |
Kafka é escrito em Scala e Java e suporta clientes em várias linguagens de programação. |
RabbitMQ é escrito em Erlang e suporta clientes em várias linguagens de programação. |
Limitação |
Planejado |
Suporta limitação em clientes produtores ou consumidores. |
Apoia a limitação baseada no crédito sobre os produtores, um mecanismo que aciona a proteção a partir de dentro. |
Entrega de mensagem ordenada |
A ordem das mensagens é mantida dentro de uma fila. |
Suporta nível de partição FIFO. |
Não compatível. Suporta FIFO somente para enfileiramento de mensagens de thread único sem recursos avançados, como filas atrasadas ou filas prioritárias. |
Segurança |
Suporta autenticação SSL. |
Suporta autenticação SSL e SASL e controle de permissões de leitura/gravação. |
Semelhante a Kafka. |
Mensagens transacionais |
Compatível |
Compatível |
Compatível |