Kafka是否具有持久订阅功能?

时间:2015-08-20 10:33:14

标签: jms messaging publish-subscribe apache-kafka

我有兴趣在我的一个项目中使用Kafka,但是要求消息代理必须在其中一个订户(消费者)断开连接时保留消息。

我看到JMS有feature

在网站上,它说Kafka有durability个功能。

它和JMS一样,还是有不同的含义?

2 个答案:

答案 0 :(得分:1)

消费者从kafka(经纪人)那里获取数据。 Consumer指定要从中收集数据的偏移量。如果消费者断开连接并返回,它可以在它离开的地方继续。它也可以从较早点开始消耗数据(改变偏移量)。

答案 1 :(得分:0)

Kafka确实支持持久的消费者风格模式,但是有几种方法可以实现它。

首先,您需要了解偏移量和消费者位置

的概念
  

Kafka维护分区中每个记录的数字偏移量。   此偏移量充当该记录内的记录的唯一标识符   分区,也表示消费者在   划分。例如,位置5的消费者已经消费了   偏移量为0到4的记录,然后将接收带有   偏移量5.实际上有两个与位置相关的概念   消费者的用户:消费者的位置给出了   下一条记录将被给出。它会比   消费者在该分区中看到的最高偏移量。它   消费者每次收到邮件时都会自动前进   呼叫轮询(持续时间)。

     

已提交位置是已存储的最后一个偏移量   安全地。如果进程失败并重新启动,则这是偏移量   消费者将恢复到。消费者可以自动   定期提交补偿;或者可以选择控制它   通过调用其中一个提交API手动确定提交位置(例如   commitSync和commitAsync)。

偏移量可以在Kafka服务器或客户端上存储/持久保存:

  1. Kafka Server保持/保持消费者位置,在这种情况下,有2个子选项:

    • 消费者明确承诺消耗消息

    • 消费者自动提交消息消耗

  2. 客户端应用程序保留/保留 消费者的立场

全部按照https://kafka.apache.org/22/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html