【发布时间】:2017-11-05 07:43:38
【问题描述】:
我知道之前有人问过这个问题:Kafka Streaming Concurrency?
但这对我来说很奇怪。根据文档(或者我可能遗漏了一些东西),每个分区都有一个任务,这意味着不同的处理器实例,并且每个任务都由不同的线程执行。但是当我测试它时,我看到不同的线程可以获得不同的处理器实例。因此,如果您想在处理器中保持任何内存状态(老式方式),您必须锁定?
示例代码:
public class SomeProcessor extends AbstractProcessor<String, JsonObject> {
private final String ID = UUID.randomUUID().toString();
@Override
public void process(String key, JsonObject value) {
System.out.println("Thread id: " + Thread.currentThread().getId() +" ID: " + ID);
输出:
线程 ID:88 ID:26b11094-a094-404b-b610-88b38cc9d1ef
线程 ID:88 ID:c667e669-9023-494b-9345-236777e9dfda
线程 ID:88 ID:c667e669-9023-494b-9345-236777e9dfda
线程 ID:90 ID:0a43ecb0-26f2-440d-88e2-87e0c9cc4927
线程 ID:90 ID:c667e669-9023-494b-9345-236777e9dfda
线程 ID:90 ID:c667e669-9023-494b-9345-236777e9dfda
有没有办法强制每个实例线程?
【问题讨论】:
标签: java multithreading apache-kafka-streams