kafka的消息生命周期



  • 一个consumer接收后是不是其它consumer就无法接收了。如果暂时没有被接收,在队列中保存多久?


  • cid:76:privileges:topics:read

    @knightseu Hi,

    Kafka里面的消息可以被多个consumer反复消费,这也就是为什么用Kafka读取消息比较让人放心的原因,因为如果遇到各种意外情况,比如consumer宕机之类的,只要offset在,就可以从挂掉的地方重新读取。

    有关Kafka中消息在队列中保存多久的问题,其实在Kafka中是可以配置的,Kafka管这叫做Message Retention Policy。具体的配置参数为log.retention.byteslog.retention.hours。第一个参数是如果Kafka的data log达到一定的大小,Kafka就会开始丢弃旧的消息。然后第二个参数是如果某条消息在队列里面存在了超过多少时间,Kafka就会开始丢弃旧的消息。

    默认来说,消息的Retention Hour是7天。这也就是为什么在咱们的项目里面或是真正公司里面的data pipeline中,额外用了Cassandra来做数据持久化。因为Kafka本身不能永久的存储数据。


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待