我有几个Samza作业运行Kafka主题的所有阅读消息,并将新消息写入新主题。要发送新消息,我使用的是Samza内置的OutgoingMessageEnvelope。还使用MessageCollector发送新消息。它看起来像这样:
collector.send(new OutgoingMessageEnvelope(SystemStream, newMessage))
有没有办法可以用它来为Kafka主题添加分区?例如对用户ID或类似内容进行分区。
或者如果有更好的方式我会喜欢听到它!
答案 0 :(得分:3)
您应该可以使用partitioning key,
发送消息<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<fieldset id="myWorkArea">
<div class="fieldrow">
<label for="input1">Class</label>
<input id="input1"/>
<a id="help1" href="#">what's this?</a>
</div>
<div class="fieldrow">
<label for="input2">Class</label>
<input id="input2"/>
<a id="help2" href="#">what's this?</a>
</div>
</fieldset>
使用此方法将对数据进行分区。但是,我认为如果您正在考虑以编程方式控制分区数量,则应使用kafka API创建/更改所提到的主题here