读取kafka消息并设置客户端正在处理该消息

pw9qyyiw  于 2021-06-05  发布在  Kafka
关注(0)|答案(3)|浏览(346)

Kafka中是否有客户可以设置的功能,例如标志或消息的某个属性?
用户故事是这样的:客户机从kafka读取消息,并为消息设置标志或atribute,这在逻辑上意味着“消息处理”。客户用信息做某事,例如发送到其他系统。如果发送到其他系统成功,那么客户端将在kafka的消息中设置消息已被处理。在该消息不应该被其他使用者获取/使用之后,消息处理就完成了。
Kafka有什么内在机制吗?

jjjwad0x

jjjwad0x1#

Kafka的消费群体概念正是你想要达到的目标:
每个kafka消费客户端都与一个consumergroup相关联。此外,一个kafka主题的每个分区可以被同一个consumergroup中的一个consumer读取。一个消费者组可以有多个消费者。
如果使用者成功地处理了数据,则使用者可以将偏移提交回kafka。这样,同一消费者组的其他消费者将知道另一消费者已经处理了数据。
你需要看的是:
消费者组
抵销管理

insrf1ej

insrf1ej2#

我认为不是因为Kafka的信息不能改变。但是你可以通过为这类信息创建一个新的主题来做类似的事情。

pkmbmrz7

pkmbmrz73#

这在Kafka是可能的,但是,没有一个概念像标记消息为正在处理
消息一经处理就可以提交,这样组中的其他使用者就不会再读取该消息(除非您手动查找)。
如果处理是一个繁重的操作,您可以将其划分为多个步骤,并在中间主题中编写中间结果。
如果将多个使用者作为一个组运行,则每个使用者都将获得一个子集数据(称为主题分区)。因此,属于该组的任何消费者都不会干扰其组中的其他消费者。
但是,如果组中的一个使用者死亡,则其他任何使用者都会从其停止的位置接管其工作(请参阅事务处理)并对其进行处理。
您可能对只处理一次消息的一次处理语义感兴趣。

相关问题