我有一个典型的 samza 任务,它消耗 2 个主题:data
和config
,并将来自的消息config
作为本地状态存储在 RocksDB 中,以检查来自的消息data
是否正常。
如果这两个主题中的每一个都只有一个分区,则此任务可以正常工作。一旦我分成data
十个分区并config
保持一个分区,事情就发生了变化。默认情况下,samza 会创建 10 个任务来消费 topic 的 partition 0 ~ 9,data
并且只有 task 0 消费config
topic:
task[0] -> config, data[0]
task[1] -> data[1]
...
task[9] -> data[9]
似乎每个任务都使用自己的rocksdb实例进行初始化,因此只有task[0]将所有配置数据存储在其rocksdb实例中,task[1~9]没有配置数据,因此无法找到传入数据的配置信息。
我期望的是每个任务都使用来自其数据分区和配置流的消息,如下所示:
task[0] -> config, data[0]
task[1] -> config, data[1]
...
task[9] -> config, data[9]
有什么办法可以做到这一点?