从多个用户线程访问 ProcessContext::forward
Access ProcessContext::forward from multiple user threads
给定:具有 KStream::transform 的 DSL 拓扑。作为 Transformer::transform 执行的一部分,从输入消息生成多条消息(可能是来自单个输入消息的数千条输出消息)。
根据从数据库中检索到的数据生成新消息。为了加快这个过程,我想创建多个用户线程来并行访问数据库中的数据。生成新消息后,线程将调用 ProcessContext::forward 向下游发送消息。
从不同线程调用 ProcessContext::forward 安全吗?
不安全,不允许从不同的线程调用 ProcessorContext#forward()
。如果你尝试,将抛出异常。
作为一种解决方法,您可以让所有线程 "buffer" 它们的结果数据,并在下一次调用 process()
时收集所有数据。作为替代方案,您还可以安排一个标点符号来收集和转发来自不同线程的数据。
给定:具有 KStream::transform 的 DSL 拓扑。作为 Transformer::transform 执行的一部分,从输入消息生成多条消息(可能是来自单个输入消息的数千条输出消息)。
根据从数据库中检索到的数据生成新消息。为了加快这个过程,我想创建多个用户线程来并行访问数据库中的数据。生成新消息后,线程将调用 ProcessContext::forward 向下游发送消息。
从不同线程调用 ProcessContext::forward 安全吗?
不安全,不允许从不同的线程调用 ProcessorContext#forward()
。如果你尝试,将抛出异常。
作为一种解决方法,您可以让所有线程 "buffer" 它们的结果数据,并在下一次调用 process()
时收集所有数据。作为替代方案,您还可以安排一个标点符号来收集和转发来自不同线程的数据。