我想使用Kafka Processor API处理来自Kafka的消息。
我想调用一些定期函数-类似于:
context.schedule(IntervalMS,punctuationType, somePunctuator)
,其中somePunctuator执行一些定期的工作,但是我使用间隔时间作为触发器,我想在处理一定数量的消息后调用该任务
是否可以在Kafka流中进行此类触发?
答案 0 :(得分:1)
是的,可以使用Kafka Streams State Store。 逻辑取决于达到已处理消息数时需要确切执行的操作。
如果需要将数据传播到下一个处理器或接收器节点,则需要将聚合值存储为键值状态存储内的对象列表。在Processor.process(..)
内,您将数据放入键值存储中,然后检查项目数是否达到限制,并执行所需的逻辑(如processorContext.forward(..)
)。请看看类似的示例here。
如果您需要在达到数字后执行一些逻辑并且不需要值,则可以仅存储计数器,并在Processor.process(..)
内递增该值。