在选择代理来执行异步操作时,您应该考虑以下几点:
- Broker Scale — 系统内每秒发送的消息数。
- 消费者效率——在管理一对一和/或一对多消费者方面是否有效。
- 数据持久性——恢复消息的能力。
RabbitMQ :
- RabbitMQ 有一些 SaaS 管理的服务,但它不是本地主要云提供商堆栈的一部分。
- 它支持所有主要语言,包括 Python、Java、.NET、PHP、Ruby、JavaScript、Go、Swift 等。
- 处于持久模式时预计会出现性能延迟。
Kafka :
- Kafka 在 Azure、AWS 和 Confluent 等顶级原生云供应商上管理 SaaS。
- Kafka 支持所有主要语言,如 .NET、C/C++、Python、Java、PHP、Ruby、JavaScript、Go、Swift、Clojure 等。
Redis:
- 它与其他消息代理的存储和处理方式略有不同。
- 从本质上讲,它是一个内存数据存储,可用作高性能应用程序,但对于临时用途,它可用作消息代理。
- Redis 将其内存转储到磁盘/数据库中,但非常适合实时数据处理。
用例:
- 对于短期消息,首选 Redis。
- 而如果您的应用程序有大量数据,那么 Kafka 将是更好的选择。
- 如果数据足够复杂,那么 RabbitMQ 将完成它的工作。