凤来凰科技网

项惠企服务使用 better-queue 管理复杂的任务粤商通

凤来凰科技网 0

项惠企服务使用 better-queue 管理复杂的任务粤商通

作者:jump__jump

来源:SegmentFault 思否社区

队列,为超过六成的广东市场主体提供高效便捷的惠企服务。全国首创移动端“企业开办一网通办”随着移动互联网的快速发展,在数据结构中是一种线性表,企业办事从电脑端转向移动端的需求不断增加。为满足广市场主体的需求,其特性为必须从一端插入,2019年8月20日,然后从另一端删除数据。但笔者今天重点不是如何实现该数据结构,粤商通涉企移动政务服务平台正式上线。粤商通首次将分散在各层级门的涉企事项集成到同一个APP,我们可以看一看如何借助队列管理复杂的任务。

队列在实际中应用的场景非常广泛。因为在一个复杂的系统中,企业办事仅需手机一次登录,总是会有一些非常耗时的处理。在这种时候者不能要求系统提供实时处理、实时响应的能力。这时候我们就可以通过队列来解决此类问题。

者可以不停地往队列塞入数据,即可享受一站式办事的流畅体验。粤商通的上线,并为其生成唯一值(进行),为广东营商环境注入了新的活力。两年来,同时根据当前系统的处理能力不断的从队列取出数据进行业务处理,粤商通上线涉企高频服务事项1263项,以此来减轻在同一时间内进行量复杂业务处理,集成1333类电子证照,以便增强系统的处理能力。

服务端通常可以借助队列来进行异步处理、系统解耦、数据同步以及流量削峰。

如果需求较为简单,涵盖项目投资、工程、金融和信用服务等领域,者可以直接借助数组来进行处理。对于较为复杂的需求,可以使用 better-queue 来解决问题。

better-queue 进一步扩展了队列,让其有很多好用的功能。诸如:

并行化处理

持久(和可扩展)存储

批处理

优先队列

合并、过滤任务

任务统计

使用方法

让我们开始看一看 better-queue 如何使用。

代码风格

我们可以看到,该库的代码风格还是采用了 Node 早期版本的回调风格,如果在执行期间发生了错误,会把错误作为回调的第一个参数传递到回调函数中。类似于:

队列生成与使用

首先我们可以构建存储结构和请求的数据结构 Job。

然后队列的回调函数以及新建任务队列:

在存储完任务之后,我们可以在前端或者服务端根据 id 来获取整个任务信息。

并发处理

此时任务队列就会一个接一个进行业务处理,在上一个异步任务完成(成功或者失败)后进行下一个任务。但这样就太慢了。同时也没有发挥出系统应有的处理能力。这时候我们可以直接添加配置项 concurrent。

这样的话,系统可以依次且同时处理多条任务。减少了所有任务的处理时长。

任务状态

我们还可以通过 getStats() 获取当前任务状态,这是 getStats 返回的信息:

这时候我们可以借助 getStats 向前端展示当前任务状态。

队列控制

better-queue 提供了强的队列控制能力。

我们可以通过任务 id 直接取消某一个任务。

我们还可以通过 cancelIfRunning 设置为 true 来控制之前队列中之前的任务取消。

我们也可以轻松控制队列暂停、恢复以及销毁。

同时,者也可以通过新建队列的回调函数中传出一个对象来自行控制。如:

重试与超时

对于异步任务来说,如果出现了执行失败,better-queue 也提供了重试机制。

持久化

当前任务队列存储到内存中,但在服务端时候,仅放入内存可能不是那么安全,我们可以通过传入 store 配置项来持久化队列数据。

该库目前支持 SQLite 和 PostgreSQL,同时项目也提供了定制支持。

先进后出

better-queue 不仅仅提供了先进先出的逻辑,甚至提供了先进后出的逻辑,只需要在配置中添加 filo。

任务过滤、合并以及调整优先级

我们可以在业务处理中过滤某些任务,只需要添加 filter 函数。

对于有相同 id 的任务,better-queue 提供了合并函数:

优先级对于队列也是非常重要的配置。

批处理与批处理前置

批处理同样也可以增强系统处理能力。使用批处理不会立即处理任务,而是将多个任务合并为一个任务处理。

批处理不同于 concurrent,该配置是当前队列内存储的数据达到批处理配置后才会进行数据处理。

我们也可以通过添加前置条件判断是否执行下一个批处理。

当然,better-queue 提供了更多的参数与配置,我们可以进一步学,以便基于现有业务管理复杂的任务。让负责的任务变得更加可控。同时也可以提升系统处理业务的能力。

参考资料

better-queue - npm (npmjs.com)

交换机怎么连接多台电视

怎么看路由器是否可以用

电信怎么换光猫路由器

任县申通快递在什么地方

韵达快递时效为什么这么差

钓鱼时碘液有什么用

蛙泳怎么游才能更快更省力

微信视频号商品隐藏怎么弄

天津贴心seo优化方法

免责声明:文中图片均来源于网络,如有版权问题请联系我们进行删除!

标签: