我有兴趣在我的一个项目中使用Kafka,但是要求消息代理必须在其中一个订户(消费者)断开连接时保留消息。
我看到JMS有feature。
在网站上,它说Kafka有durability个功能。
它和JMS一样,还是有不同的含义?
答案 0 :(得分:1)
消费者从kafka(经纪人)那里获取数据。 Consumer指定要从中收集数据的偏移量。如果消费者断开连接并返回,它可以在它离开的地方继续。它也可以从较早点开始消耗数据(改变偏移量)。
答案 1 :(得分:0)
Kafka确实支持持久的消费者风格模式,但是有几种方法可以实现它。
首先,您需要了解偏移量和消费者位置
的概念Kafka维护分区中每个记录的数字偏移量。 此偏移量充当该记录内的记录的唯一标识符 分区,也表示消费者在 划分。例如,位置5的消费者已经消费了 偏移量为0到4的记录,然后将接收带有 偏移量5.实际上有两个与位置相关的概念 消费者的用户:消费者的位置给出了 下一条记录将被给出。它会比 消费者在该分区中看到的最高偏移量。它 消费者每次收到邮件时都会自动前进 呼叫轮询(持续时间)。
已提交位置是已存储的最后一个偏移量 安全地。如果进程失败并重新启动,则这是偏移量 消费者将恢复到。消费者可以自动 定期提交补偿;或者可以选择控制它 通过调用其中一个提交API手动确定提交位置(例如 commitSync和commitAsync)。
偏移量可以在Kafka服务器或客户端上存储/持久保存:
Kafka Server保持/保持消费者位置,在这种情况下,有2个子选项:
消费者明确承诺消耗消息
消费者自动提交消息消耗
客户端应用程序保留/保留 消费者的立场
全部按照https://kafka.apache.org/22/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html。