首页 > 编程语言 >nodejs xxl-job-executor 客户端试用

nodejs xxl-job-executor 客户端试用

时间:2023-10-11 14:48:00浏览次数:36  
标签:xxlJobExecutor const nodejs process job executor xxl

代码fork 自awesomeoxc/xxl-job-executor-nodejs,进行了一些以来包的升级,同时发布npm包到npm 仓库中,方便使用

npm 包名称

npm 包我已经发布npm 仓库中了,可以直接使用@dalongrong/xxl-job-executor

参考使用

  • 安装
npm install @dalongrong/xxl-job-executor  --save
or
yarn add @dalongrong/xxl-job-executor 
  • handler 定义
    jobHandlers.js
 
/**
 * demo任务
 * @param {any} jobLogger 由xxl-job组件定义的任务logger,会将日志内容输出到文件,可在调度中心查看执行日志
 * @param {{ jobParam1: any, jobParam2: any }} jobParams 任务参数
 * @param {Object} context 任务上下文
 * @return {Promise<void>} 函数必须返回一个 promise
 */
const demoJobHandler = async (jobLogger, jobParams, context) => {
    jobLogger.debug('params: %o, context: %o', jobParams, context)
    const sleep = async (millis) => new Promise((resolve) => setTimeout(resolve, millis))
    for (let i = 1; i < 10; i++) {
      await sleep(1000)
      jobLogger.debug(`${i}s passed`)
    }
    // 
    // do error handler with throw exception, default is success
    throw new Error('exector  jobHandler is  error')
    // return { code: 500, msg: `exector  jobHandler is  error)` }
  }
 
  module.exports = {
    jobHandlers: new Map([
      ['demoJobHandler', demoJobHandler],
    ]),

一些说明: 默认xxljob 的job 之行状态是正常的,但是如果我们的业务需要自定义异常(方便报警通知的场景),可以自己抛出一个exception
同时返回对应的信息,方便报警集成

  • 集成
    因为handler 对应的executor 需要是一个long running 的任务,同时需要支持api 操作(rpc 接口)具体示例在example 中有
    web 服务代码
 
require("dotenv").config();
// 实例化 XxlJobExecutor 组件
const XxlJobExecutor = require('@dalongrong/xxl-job-executor')
const { jobHandlers } = require('./jobHandlers')
const context = { /* anything*/ }
const xxlJobExecutor = new XxlJobExecutor(jobHandlers, context)
 
const address  =require('address')
// 实例化 express app
const app = require('express')()
app.use(require('body-parser').json())
 
console.log(address.ip())
// 应用 XxlJobExecutor 组件,注意因为注册的执行器是需要在管理中可以接口调用的,所以注册的地址需要是一个可达地址(对于nodejs 可以通过address 模块获取ip 地址)
xxlJobExecutor.applyMiddleware({ app, appType: 'EXPRESS', appDomain: `http://${address.ip()}:3000`, path: '/job' })
 
app.listen(3000, '0.0.0.0', () => console.log('server startup'))
 
// 应用退出前从注册中心摘除执行器
// const { addShutdownHandlers } = require('./shutdown')
// addShutdownHandlers(xxlJobExecutor.close.bind(xxlJobExecutor))
process.on('exit', () => {
    console.log('************ The process exits completely. ************')
    xxlJobExecutor.close()
})
process.on('SIGINT', async () => {
    console.log('************ The process SIGINT completely. ************')
    await xxlJobExecutor.close()
    process.exit()
 
})
process.on('SIGHUP', async () => {
    console.log('************ The process SIGHUP completely. ************')
    await xxlJobExecutor.close()
    process.exit()
 
})
process.on('SIGTERM', async () => {
    console.log('************ The process SIGTERM completely. ************')
    await xxlJobExecutor.close()
    process.exit()
})

说明

代码主要是fork 自社区提供的,自己调整了包名,详细的可以参考源码, xxl-job-executor-nodejs 客户端可以方便
业务集成,实际上可以参考java 版本的进行一些调整,更方便业务使用

参考资料

https://www.npmjs.com/package/@dalongrong/xxl-job-executor
https://www.xuxueli.com/xxl-job/
https://github.com/awesomeoxc/xxl-job-executor-nodejs
https://github.com/rongfengliang/xxl-job-executor-nodejs/tree/main

标签:xxlJobExecutor,const,nodejs,process,job,executor,xxl
From: https://www.cnblogs.com/rongfengliang/p/17757017.html

相关文章

  • SpringBoot整合XXLJob
    目录XXLJob简介特性模块安装调度中心初始化数据库配置启动整合执行器pomymlXxlJobConfig启动执行器实践简单的定时任务在执行器创建任务在调度中心创建执行器在调度中心创建任务带前置和后置处理的定时任务XxlJob注解详解创建带前(后)置处理的任务父子任务父子执行器关联父子任务执......
  • nodejs之常用命令
    node控制台命令#新建文件夹mkdirname#清空控制台clearclr#跳转到指定目录cdname(目录名)#返回上一级cd..#移除指定文件rm文件名name#重命名renamesrc/index.htmlsrc/index.pug#清除缓存:cnpmcacheclean--forces#结束退出ctrl+c#......
  • node-oracledb nodejs 包支持thin 模式了
    node-oracledb从v6.0.0版本来时支持thin模式了,是基于纯javascript开发的驱动,我们终于可以不用依赖比较笨重的oracleclient了属于一个很大的进度,同时python版本也是支持thin模式了,我以前也简单介绍过参考资料https://github.com/oracle/node-oracledb/releaseshttps://me......
  • ORA-12012 Error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_<NN> in 12.2 Dat
    1错误2023-10-08T13:11:12.127171+08:00Errorsinfile/oracle/diag/rdbms/arch/ARCH2/trace/ARCH2_j000_305066.trc:ORA-12012:erroronautoexecuteofjob"SYS"."ORA$AT_OS_OPT_SY_154038"ORA-20001:StatisticsAdvisor:Invalidtasknamefo......
  • Exception in thread "main" java.lang.UnsupportedClassVersionError: org/example/J
    问题描述使用hadoop在虚拟机里面运行打包的程序出错:问题解决真的服了,貌似是jdk的版本啥的问题,搜了好多,就是解决不了,求助求助啊!......
  • nodejs在linux下配置环境变量安装指南
    编辑环境变量#vim/etc/profile1.按i建进入插入编辑状态2.在文件最后加上两行:exportNODEJS_HOME=/usr/local/nodejs/node-v16.16.0-linux-x64exportPATH=$NODEJS_HOME/bin:$PATH3.按Esc退出编辑模式4.按:wq!退出并保存文件5.用下面命令刷新环境变量#......
  • XXL-JOB简单使用
    简介学习简单、轻量级、易扩展、动态生效、调度中心HA、执行器HA、弹性扩容缩容、路由策略、故障转移、阻塞处理策略、任务超时控制、任务失败重试、任务失败告警、分片广播任务、动态分片、事件触发等很多特性。使用下载源码gitee地址项目源码结构如下xxl-job-admin:调度中......
  • nvm 安装与使用(实现Nodejs版本切换,及找不到npm的问题)
    https://blog.csdn.net/sxk1101/article/details/129208573除文章操作,别忘记把 nvm安装与使用(实现Nodejs版本切换,及找不到npm的问题)......
  • 运维 | 如何使用 nvm 安装和管理 nodeJS 版本
    运维|如何使用nvm安装和管理nodeJS版本简介NVM是什么nvm(NodeVersionManager)是NodeJS版本管理器,可对不同的node版本快速进行切换。为什么要用NVM基于node的工具和项目越来越多,但是每个项目使用的node版本可能不一致,就会出现一些奇怪的问题。比如:自己电脑......
  • 02_nodejs开发环境安装
    02【nodejs开发环境安装】1.版本介绍在命令窗口中输入node-v可以查看版本0.x完全不技术ES64.x部分支持ES6特性5.x部分支持ES6特性(比4.x多些),属于过渡产品,现在来说应该没有什么理由去用这个了6.x支持98%的ES6特性8.x支持ES6特性2.Node.js运行环境配置:通过Node.js......