Spring Cloud流Kafka如何用循环策略产生信息?

eblbsuwk  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(567)

我们已经将SpringBoot升级到2.0.3版本(以前是1.5.10)。因此,我们更改了kafka&spring cloud stream的版本(2.0.0-release)
在我们的属性yml文件中,我们并不总是配置 partitionKeyExpression 我们大多数人 partitionCount 大于1。
在以前的版本中,这些设置以及不传递任何键将导致以循环策略生成消息。
在新版本中,相同的设置会导致 isPartitioned 返回true,这将使用新的partitionhandler添加拦截器,其中extractkey方法由于缺少键而失败(用消息“partition key cannot be null”Assert)。
问题是,我们如何在设置相同或更改较少的情况下保持以前的行为。我们如何能保持不使用密钥并确保消息以循环策略发送到分区?

wmvff8tz

wmvff8tz1#

计数现在用于决策。

public boolean isPartitioned() {
    return this.partitionCount > 1 || this.partitionKeyExpression != null
            || this.partitionKeyExtractorName != null || this.partitionKeyExtractorClass != null;
}

我认为这是错误的。
作为一个解决办法,不要设置流 producer.partitionCount 如果您想使用本机kafka分区(并且主题已经存在)。

相关问题