Multithreading 如何确保Executor服务处理StateStore中的数据而不被永久阻止
我有一个基于Kafka streams的应用程序(使用低级API),简而言之,它执行以下操作: 流进程(具有Multithreading 如何确保Executor服务处理StateStore中的数据而不被永久阻止,multithreading,apache-kafka-streams,executorservice,rocksdb,Multithreading,Apache Kafka Streams,Executorservice,Rocksdb,我有一个基于Kafka streams的应用程序(使用低级API),简而言之,它执行以下操作: 流进程(具有process()方法的进程) 从卡夫卡主题读取数据 将数据放入StateStore(由RocksDB支持) 流处理器在初始化期间生成一个线程(在init()方法中,将其称为工作线程): 工作线程是执行器服务,每1分钟唤醒一次 从同一StateStore读取数据,然后进行处理 我有一个要求,即需要每2小时(而不是每分钟)叫醒一次员工执行者服务 由于流线程在工作线程执行器服务
process()
方法的进程)
- 从卡夫卡主题读取数据
- 将数据放入
(由StateStore
支持)RocksDB
- 工作线程是执行器服务,每1分钟唤醒一次
- 从同一StateStore读取数据,然后进行处理
有人能提供一些关于如何解决这个问题的信息吗?我相信RocksDB API是线程安全的,所以它不应该是一个问题
作为一个旁白,你可以考虑使用而不是产卵不同的线程。标点器由流线程调用,因此它将是单个线程