【发布时间】:2019-03-02 21:42:49
【问题描述】:
我们有一个可以工作的 rabbitmq .implementation ,由于量大,我们计划切换到 kafka。
我有一个疑问。
在 rabbitMQ 中,当消费者从 Q 消费消息时,消息进入不同的阶段,即未确认阶段。客户端/消费者需要一些时间来处理消息,在成功处理后,它会向 Q 发送确认消息,并且消息会从 Q 中删除。如果不成功,在定义的时间段后,如果 Q 没有得到确认,则消息是附加在 Q 的末尾。这样我们就不会丢失任何消息。
根据我对 Kafka 的了解,我知道如果例如消息 100 未成功处理,则偏移量不会增加,但如果消息 101 处理成功,则偏移量会增加。所以我丢失了消息 100。
有没有办法保证所有消息都不会丢失。
【问题讨论】:
-
您必须实现死信队列 (DLQ)。
-
为什么不将 Solace 视为更接近 Rabbit 的消息传递替代品?类似的 API + 语义(例如每个消息的 ACK),但更好的卷处理。
标签: apache-kafka rabbitmq producer-consumer