liteflow使用注意事项

背景

最近项目使用到了liteflow这个组件的编排框架,官方地址为https://liteflow.cc/pages/fd5984/#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95,简单的使用场景我就不介绍了。本文只是记录下使用过程中的一些注意事项

liteflow使用注意事项

1.liteflow不同组件之间的数据传递一般都是通过数据上下文进行的,如果其中包含when并行操作,这就涉及到线程安全的问题,也就是多个线程会并发的修改数据上下文对象,所以我们需要注意操作数据上下文中数据时的线程安全问题,此外main线程和when线程操作同一个数据上下文时也涉及到数据的可见性问题,所以我们操作数据上下文时需要时刻注意数据上下文的线程安全,官方的DefaultContext数据上下文里面包含的就是线程安全的concurrenthashmap对象
2.timeout实现原理:当某个组件或者表达式设置了timeout时,liteflow内部会把组件或者表达式封装成一个Runnable丢到When线程池中执行,不过设置了执行超时为timeout,然后main线程通过future.get的方式等待组件执行结束(或者执行超时),所以需要注意when线程池不仅仅只是给when表达式使用的,对于设置了timeout的then等也会使用到when全局线程池,所以我们需要注意设置when线程池时线程大小和队列长度等参数
3.when全局线程池的配置,core和max线程大小就是参数里面when设定的,然后队列的大小也是从when全局参数里面设定的,对于如果提交的任务超过了线程池能处理的上限,那么when线程池会抛出拒绝执行异常,业务需要仔细评估如何设置这些参数
4.when的超时时间设置,他表示when表达式中的每个并行组件的执行时间不能超过15s,如果超过会报异常,所以你需要根据你的实际业务场景设置这个超时参数的值
5.对于liteflow的平滑刷新,由于他每次构造chain的时候,它会先把chain依赖的condition都构造完,然后最后一步才是把chain加到FlowBus中,而只有加入到FlowBus中才会被用到,所以可以做到使用的chain要么是之前的要么是刷新之后的

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值