我有一个具有这些特殊要求的场景:
- 生产就绪且稳定。
- 点对点连接,生产者在防火墙后面,消费者在云中。有可能在几个生产者\消费者之间拆分流量,但所有流量仍然必须通过单个 WAN 连接,这可能是瓶颈。
- 高吞吐量 - 大约 300 Mb/秒(可能高达 1Gb!)。消息大小从 ~1KB 到可能的几 MB 不等。
- 保证交付是必须的——每条消息最终都必须到达消费者,因此我们需要开始将消息保存到磁盘以防网络暂时中断或内存不足的风险。
- 消息顺序并不重要,消息带有时间戳,并且可以在消费者处重新排列。
- 非常可取但不那么重要 - 应该在 linux 和 windows 上运行(JVM 似乎是显而易见的选择)
我最近一直在看这么多MQ,我没有任何动手经验。
觉得问问有经验的人会更好。
我们主要考虑 Kafka,但我不确定它是否最适合我们的用例,似乎是为分布式部署和多个主题\消费者\生产者量身定制的。此外,绝对没有在 Windows 上准备好生产。Apache ActiveMQ 或 Apollo\Artemis 呢?RabbitMQ 似乎不太适合我们的性能要求。或者也许有一些 Java 库在没有中间人代理的情况下具有我们需要的功能?
任何帮助理解这个 kludge 将不胜感激。