我们有非常非常简单的数据管道,我们的问题是规模。
发布者将消息发送到队列,并且消费者需要使用它。 顺序很重要(必须为FIFO)我们现在使用rabbitMQ,但是它不能满足我们的需求。每分钟有数百万条消息。在我们从队列中删除消息之前,我们必须对其进行一些处理(数据库查找和解析),这需要时间,有时它会导致队列崩溃并导致数据丢失。
我们的需求是1.可以处理大规模的快速队列2.最小的数据丢失
是的,您可以使用Kafka解决此问题,所使用的协议可能比RabbitMQ对您的工作负载更有效,因为例如卡夫卡中没有确认所有消息。
顺序很重要(必须为FIFO)
这可以通过使用单个主题和单个分区来解决。但是您应该分析数据并研究是否可以对数据进行分区以提高吞吐量。
有时导致队列崩溃并导致数据丢失。
如果使用Kafka处理工作量时获得足够的吞吐量,则队列稳定性应该不是问题。