Does Kafka have Durable Subscriptions feature?

余生长醉 提交于 2019-12-13 01:25:24

问题


I'm interested to use Kafka in one of my projects, but there is a requirement that the messaging broker have to keep the the messages when one of the subscriber (consumer) is disconnected.

I see that JMS have this feature.

In the website it said that Kafka had durability features.

Is it the same like JMS or is it have different meaning ?


回答1:


Consumer pulls the data from kafka (brokers). Consumer specifies the offset from where it wants to gather the data. If Consumer disconnects and comes back, it can continue where it left. It can also start consuming data from earlier point (changing the offset).




回答2:


Kafka does support a durable consumer style pattern, but there are a few ways to achieve it.

First you need to understand the concept of Offsets and Consumer Position

Kafka maintains a numerical offset for each record in a partition. This offset acts as a unique identifier of a record within that partition, and also denotes the position of the consumer in the partition. For example, a consumer which is at position 5 has consumed records with offsets 0 through 4 and will next receive the record with offset 5. There are actually two notions of position relevant to the user of the consumer: The position of the consumer gives the offset of the next record that will be given out. It will be one larger than the highest offset the consumer has seen in that partition. It automatically advances every time the consumer receives messages in a call to poll(Duration).

The committed position is the last offset that has been stored securely. Should the process fail and restart, this is the offset that the consumer will recover to. The consumer can either automatically commit offsets periodically; or it can choose to control this committed position manually by calling one of the commit APIs (e.g. commitSync and commitAsync).

The offset can be stored/persisted on either the Kafka server or the client side:

  1. Kafka Server persists/holds the consumers position, in this case there are 2 sub options:

    • Consumer explicitly commits the message consumption

    • Consumer automatically commits the message consumption

  2. Client application persists/holds the consumers position

This is all as per https://kafka.apache.org/22/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html.



来源:https://stackoverflow.com/questions/32115879/does-kafka-have-durable-subscriptions-feature

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!