我有一个要求,我必须根据<Value object>
中某个字段的不同值创建主题名称。因此,具有相似字段值的所有records<K,V>
都位于Topic_<Field>
中。我怎么能用kstream来做呢?
答案 0 :(得分:1)
在Kafka 1.1.0中,您可以使用getFileSize("myFileUri").
then(function(fileSize){
console.log(fileSize);
}).
catch(function(err){
console.error(err);
});
将流分割为子流,然后通过向每个子流添加不同的宿运算符(即branch()
)将不同的子流写入不同的主题
Kafka 2.0(将于6月发布),增加了一个新的“动态路由”功能,简化了这种情况。比较:https://cwiki.apache.org/confluence/display/KAFKA/KIP-303%3A+Add+Dynamic+Routing+in+Streams+Sink
请注意,Kafka Streams要求手动创建接收器主题 - Kafka Streams不会为您创建任何接收器主题。正如@Hemant所提到的,您可以启用自动主题创建。但是,一般不推荐它(一个原因是你可能想要不同主题的不同配置,但是通过自动创建都将使用相同的默认配置创建。)
另请注意,如果通过向应用程序发送“错误数据”并因此创建数百或数千个主题(通过为每封邮件指定不同的主题名称)来启用自动主题创建,则流氓应用程序可以DDoS您的Kafka群集。因此,它存在风险,不建议启用自动主题创建,而是手动创建主题。