作者回复: groupBy之后才能进行各种aggregation操作,比如count。groupBy要指定根据什么进行group,这就是key
作者回复: 截止到程序运行时
作者回复: 1. 不知道你说的是哪个Java进程。比如对Broker进程而言,线程数可能会有很多,大约十几个。如果想了解都有哪些线程,不妨用JConsole去查看下
2. Java Consumer使用单线程获取所有分区数据,至于拿到消息之后是否分多个线程由用户决定。对于Kafka Streams而言,由参数num.stream.threads而定
3. 这个因你使用什么operator而定。
作者回复: 在topic层面,它们的区别反映在cleanup.policy上:stream是non-compact的topic;table是compact的topic
作者回复: 第三点使用Interceptor试试呢?
作者回复: 1. 不需要,它会记录消费位移的
2. 也是通过poll的,因为本质上就是consume-process-produce的流程
3. “事件的 Key 也必须要携带时间窗口的信息” 这句话是指因为引入了时间窗口,所以key中带了时间窗口的信息,比如窗口开始时间,结束时间等
作者回复: 如果你自己写java代码肯定是可以的,不过这样你就要自行处理负载均衡、故障转移等问题了啊
作者回复: 是的:)