从Kafka中间主题

时间:2018-02-26 09:15:39

标签: java apache-kafka message-queue apache-kafka-streams

我有一个名为SOURCE的主题,其中包含两种消息A和B的流。我编写了一个消耗该主题的kafka-streams应用程序,找到具有相同相关ID的A和B并聚合它们到新消息C并将其放在输出主题DESTINATION

有时A没有B(或反之亦然)会出现SOURCE主题。我创建了一个可查询的状态存储,因此我可以查看这些悬空消息,但现在我想删除中间主题中的特定消息。我猜这只是用正确的密钥(我有)得到一条消息的问题,并将主体纳入中间主题。问题是最好的方法是什么?

  1. 向SOURCE生成一条特殊的清除消息,这将导致聚合消息变为空
  2. 使用空数据直接将消息写入中间主题
  3. 其他一些方式,也许kafka-streams已经有了这个API调用?
  4. 奖金问题:如果我知道我不希望消息在中间主题中停留超过6个月,我是否可以指示kafka-streams创建具有6米保留时间的中间主题,或者我应该自己手动创建主题我运行应用程序?

1 个答案:

答案 0 :(得分:0)

  

奖金问题:如果我知道我不希望消息在中间主题中停留超过6个月,我是否可以指示kafka-streams创建6m保留的中间主题,或者我应该自己创建主题在我运行应用程序之前手动操作?

是的,您可以设置保留时间,例如:

kafka/bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name my_topic --alter --add-config retention.ms=16070400000

或者在创建主题时:

kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 10 --if-not-exists --config retention.ms=16070400000 --topic my_topic