XXL-JOB GLUE任务第三方依赖包的管理实践

XXL-JOB GLUE任务第三方依赖包的管理实践,xxl-job 是一个分布式任务调度平台,它的应用场景非常广泛,例如定时任务、消息推送、批处理等。xxl-job 中的任务类型主要有两种:,支持基于方法的开发方式,每个任务对应一个方法。,任务以源码方式维护在调度中心,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler。例如我的代码是python类型的代码,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发。,XXL-JOB GLUE任务第三方依赖包的管理实践,GLUE Python任务代码编辑,
,但是大家注意到没有,这个地方没有涉及应用的环境问题,比如我的是java代码,那我的程序中的某个包是否在本地能被引用到,即通过maven或是gradle已经下载本地了,或是我的python代码的依赖包是否在当前环境pip install了,我们从官方的github issues中,看到有很多同学提到了这些问题.但是这个官方没有给出具体的解决方案。这篇文档,就给大家谈谈这个问题。,https://github.com/xuxueli/xxl-job/issues/129,https://github.com/xuxueli/xxl-job/issues/254,https://github.com/xuxueli/xxl-job/issues/1401,在 xxl-job 的 GLUE 模式下,如果任务类型为 Java 类型,那么需要保证任务依赖的相关 JAR 包已经下载到本地环境中,否则任务执行会出现 ClassNotFoundException 等类加载异常。,一种比较简单的方式是将任务依赖的 JAR 包打成一个 Fat Jar,然后将 Fat Jar 放在执行器的 classpath 中即可。Fat Jar 是将多个 JAR 包合并成一个 JAR 包的方式,执行时只需要引入这个 JAR 包即可。例如我们修改执行器的pom.xml,加入fastjson(相当于把jar放到了执行器的classpath中),然后我们的DemoGlueJobHandler便可以引用fastjson里面的类了。,XXL-JOB GLUE任务第三方依赖包的管理实践,demo glue直接引用相关类,XXL-JOB GLUE任务第三方依赖包的管理实践,demo glue执行结果,除了把依赖包提前放到执行器的classpath之外(可能会有包的冲突),还可以在任务执行前,通过代码动态加载依赖的 JAR 包,避免手动打包依赖的麻烦。可以使用 URLClassLoader 类实现动态加载。首先我们把依赖的包放在一个共享盘上,保证执行器可以直接访问到,然后通过反射机制实现代码的调用与执行。具体实现方式可以参考以下代码示例:,XXL-JOB GLUE任务第三方依赖包的管理实践,demo glue反射运行结果,在 xxl-job 的 GLUE 模式下,如果任务类型为 Python 类型,那么需要保证任务依赖的相关库已经下载到本地环境中,否则任务执行会出现 ImportError 等异常。,一种常用的方式是使用 Python 虚拟环境(Virtual Environment)来管理依赖库。虚拟环境是 Python 的一个功能,可以在一个独立的环境中安装 Python 和相关库,不会影响到全局环境。,XXL-JOB GLUE任务第三方依赖包的管理实践

文章版权声明

 1 原创文章作者:cmcc,如若转载,请注明出处: https://www.52hwl.com/27382.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年6月23日
下一篇 2023年7月15日