Kafka Streams-一对二无法运行-分区分配错误

时间:2018-09-26 17:25:46

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

在我公司的一个应用程序中,为了对称为LIVE和PRE-MATCH的两组消息进行一些转换,我们创建了2个Kafka流,每个组分别一个。 这两个流均已正确启动,但是其中一个始终按时间顺序创建的第二个流不会进行任何更改:这意味着它不会占用开始主题的任何内容。

对日志的分析表明,主题和分区的配置必定存在一些问题:

2018-09-26 11:36:59,963 [INFO ] [] [StreamThread-2] [o.a.k.c.c.i.ConsumerCoordinator] - Setting newly assigned partitions [] for group Union
2018-09-26 11:36:59,963 [INFO ] [] [StreamThread-1] [o.a.k.c.c.i.ConsumerCoordinator] - Setting newly assigned partitions [betgenius.integralfeed.live-0] for group Union

正如您在上面的日志部分中看到的那样,与LIVE提要关联的StreamThread-1获取映射到正确的源主题的分区的正确分配;在这种情况下与PRE-MATCH提要相关联的StreamThread-2,似乎收到了一个分配给空源主题的分区,实际上是一个不起作用的分区。

如果我人为地强迫在实况直播之前创建PRE-MATCH流,则情况就相反了。

用于创建两个流的代码是完全相同的,我只是更改了起始主题和结束主题。

我的Kafka配置上是否可能没有足够的可用资源?

1 个答案:

答案 0 :(得分:2)

根据提供的日志,似乎您为两个Kafka流使用了相同的groupId Union,但是对于每个流,它们应该是唯一的。因此请确保为设置属性application.id提供了不同的值。

application.id-流处理应用程序的标识符在Kafka集群中必须是唯一的。