报错的原因:函数(比如这里的append_plan函数)的参数里面没有加mutable的话,调用这个函数的时候会把这个对象(比如这里的csEngine1)设成readOnly,这时候如果有另一个线程去写这个对象(你的第一个订阅就在写csEngines1)的话会报上述错误。
解决方法一:订阅sTb_join12 的两个subscribeTable函数,传相同的hash值。因为hash值设为相同时,会在同一个线程中轮流处理这两个订阅任务,就避免了并发继而避免了报错。
解决方法二:你的两个订阅可以简化为一个,在自定义函数里append!横截面引擎,然后接着写你之前的自定义函数里的各种处理逻辑,这样保证了对表CSEngines1的append!和select查询两件事一定是串行的,示例如下: