Coder Social home page Coder Social logo

xuxueli / xxl-job Goto Github PK

View Code? Open in Web Editor NEW
27.0K 952.0 10.7K 33.49 MB

A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)

Home Page: http://www.xuxueli.com/xxl-job/

License: GNU General Public License v3.0

Java 99.93% Dockerfile 0.07%
xxl-job job quartz glue task schedule scheduler java distributed restful cron

xxl-job's Introduction

XXL-JOB

XXL-JOB, a distributed task scheduling framework.
-- Home Page --

Sponsor

XXL-JOB is an open source and free project, with its ongoing development made possible entirely by the support of these awesome backers.

XXL-JOB 是一个开源且免费项目,其正在进行的开发完全得益于支持者的支持。开源不易,前往赞助项目开发

Introduction

XXL-JOB is a distributed task scheduling framework. It's core design goal is to develop quickly and learn simple, lightweight, and easy to expand. Now, it's already open source, and many companies use it in production environments, real "out-of-the-box".

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

Documentation

Communication

Features

  • 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
  • 2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;
  • 3、调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;
  • 4、执行器HA(分布式):任务分布式执行,任务"执行器"支持集群部署,可保证任务执行HA;
  • 5、注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
  • 6、弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;
  • 7、触发策略:提供丰富的任务触发策略,包括:Cron触发、固定间隔触发、固定延时触发、API(事件)触发、人工触发、父子任务触发;
  • 8、调度过期策略:调度中心错过调度时间的补偿处理策略,包括:忽略、立即补偿触发一次等;
  • 9、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;
  • 10、任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;
  • 11、任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试;
  • 12、任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便的扩展短信、钉钉等告警方式;
  • 13、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等;
  • 14、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;
  • 15、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
  • 16、故障转移:任务路由策略选择"故障转移"情况下,如果执行器集群中某一台机器故障,将会自动Failover切换到一台正常的执行器发送调度请求。
  • 17、任务进度监控:支持实时监控任务进度;
  • 18、Rolling实时日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志;
  • 19、GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持30个版本的历史版本回溯。
  • 20、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS、PHP、PowerShell等类型脚本;
  • 21、命令行任务:原生提供通用命令行任务Handler(Bean任务,"CommandJobHandler");业务方只需要提供命令行即可;
  • 22、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔;
  • 23、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行;
  • 24、自定义任务参数:支持在线配置调度任务入参,即时生效;
  • 25、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
  • 26、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;
  • 27、邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
  • 28、推送maven**仓库: 将会把最新稳定版推送到maven**仓库, 方便用户接入和使用;
  • 29、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
  • 30、全异步:任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰,理论上支持任意时长任务的运行;
  • 31、跨语言:调度中心与执行器提供语言无关的 RESTful API 服务,第三方任意语言可据此对接调度中心或者实现执行器。除此之外,还提供了 “多任务模式”和“httpJobHandler”等其他跨语言方案;
  • 32、国际化:调度中心支持国际化设置,提供中文、英文两种可选语言,默认为中文;
  • 33、容器化:提供官方docker镜像,并实时更新推送dockerhub,进一步实现产品开箱即用;
  • 34、线程池隔离:调度线程池进行隔离拆分,慢任务自动降级进入"Slow"线程池,避免耗尽调度线程,提高系统稳定性;
  • 35、用户管理:支持在线管理系统用户,存在管理员、普通用户两种角色;
  • 36、权限控制:执行器维度进行权限控制,管理员拥有全量权限,普通用户需要分配执行器权限后才允许相关操作;

Development

于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计……

于2015-11月,XXL-JOB终于RELEASE了第一个大版本V1.0, 随后我将之发布到OSCHINA,XXL-JOB在OSCHINA上获得了@红薯的热门推荐,同期分别达到了OSCHINA的“热门动弹”排行第一和git.oschina的开源软件月热度排行第一,在此特别感谢红薯,感谢大家的关注和支持。

于2015-12月,我将XXL-JOB发表到我司内部知识库,并且得到内部同事认可。

于2016-01月,我司展开XXL-JOB的内部接入和定制工作,在此感谢袁某和尹某两位同事的贡献,同时也感谢内部其他给与关注与支持的同事。

于2017-05-13,在上海举办的 "第62期开源**源创会" 的 "放码过来" 环节,我登台对XXL-JOB做了演讲,台下五百位在场观众反响热烈(图文回顾 )。

于2017-10-22,又拍云 Open Talk 联合 Spring Cloud **社区举办的 "进击的微服务实战派上海站",我登台对XXL-JOB做了演讲,现场观众反响热烈并在会后与XXL-JOB用户热烈讨论交流。

于2017-12-11,XXL-JOB有幸参会《InfoQ ArchSummit全球架构师峰会》,并被拍拍贷架构总监"杨波老师"在专题 "微服务原理、基础架构和开源实践" 中现场介绍。

于2017-12-18,XXL-JOB参与"2017年度最受欢迎**开源软件"评比,在当时已录入的约九千个国产开源项目中角逐,最终进入了前30强。

于2018-01-15,XXL-JOB参与"2017码云最火开源项目"评比,在当时已录入的约六千五百个码云项目中角逐,最终进去了前20强。

于2018-04-14,iTechPlus在上海举办的 "2018互联网开发者大会",我登台对XXL-JOB做了演讲,现场观众反响热烈并在会后与XXL-JOB用户热烈讨论交流。

于2018-05-27,在上海举办的 "第75期开源**源创会" 的 "架构" 主题专场,我登台进行“基础架构与中间件图谱”主题演讲,台下上千位在场观众反响热烈(图文回顾 )。

于2018-12-05,XXL-JOB参与"2018年度最受欢迎**开源软件"评比,在当时已录入的一万多个开源项目中角逐,最终排名第19名。

于2019-12-10,XXL-JOB参与"2019年度最受欢迎**开源软件"评比,在当时已录入的一万多个开源项目中角逐,最终排名"开发框架和基础组件类"第9名。

于2020-11-16,XXL-JOB参与"2020年度最受欢迎**开源软件"评比,在当时已录入的一万多个开源项目中角逐,最终排名"开发框架和基础组件类"第8名。

于2021-12-06,XXL-JOB参与"2021年度OSC**开源项目评选 "评比,在当时已录入的一万多个开源项目中角逐,最终当选"最受欢迎项目"。

我司大众点评目前已接入XXL-JOB,内部别名《Ferrari》(Ferrari基于XXL-JOB的V1.1版本定制而成,新接入应用推荐升级最新版本)。 据最新统计, 自2016-01-21接入至2017-12-01期间,该系统已调度约100万次,表现优异。新接入应用推荐使用最新版本,因为经过数十个版本的更新,系统的任务模型、UI交互模型以及底层调度通讯模型都有了较大的优化和提升,核心功能更加稳定高效。

至今,XXL-JOB已接入多家公司的线上产品线,接入场景如电商业务,O2O业务和大数据作业等,截止最新统计时间为止,XXL-JOB已接入的公司包括不限于:

- 1、大众点评【美团点评】
- 2、山东学而网络科技有限公司;
- 3、安徽慧通互联科技有限公司;
- 4、人人聚财金服;
- 5、上海棠棣信息科技股份有限公司
- 6、运满满【运满满】
- 7、米其林 (**区)【米其林】
- 8、妈妈联盟
- 9、九樱天下(北京)信息技术有限公司
- 10、万普拉斯科技有限公司【一加手机】
- 11、上海亿保健康管理有限公司
- 12、海尔馨厨【海尔】
- 13、河南大红包电子商务有限公司
- 14、成都顺点科技有限公司
- 15、深圳市怡亚通
- 16、深圳麦亚信科技股份有限公司
- 17、上海博莹科技信息技术有限公司
- 18、**平安科技有限公司【**平安】
- 19、杭州知时信息科技有限公司
- 20、博莹科技(上海)有限公司
- 21、成都依能股份有限责任公司
- 22、湖南高阳通联信息技术有限公司
- 23、深圳市邦德文化发展有限公司
- 24、福建阿思可网络教育有限公司
- 25、优信二手车【优信】
- 26、上海悠游堂投资发展股份有限公司【悠游堂】
- 27、北京粉笔蓝天科技有限公司
- 28、中秀科技(无锡)有限公司
- 29、武汉空心科技有限公司
- 30、北京蚂蚁风暴科技有限公司
- 31、四川互宜达科技有限公司
- 32、钱包行云(北京)科技有限公司
- 33、重庆欣才集团
- 34、咪咕互动娱乐有限公司【**移动】
- 35、北京诺亦腾科技有限公司
- 36、增长引擎(北京)信息技术有限公司
- 37、北京英贝思科技有限公司
- 38、刚泰集团
- 39、深圳泰久信息系统股份有限公司
- 40、随行付支付有限公司
- 41、广州瀚农网络科技有限公司
- 42、享点科技有限公司
- 43、杭州比智科技有限公司
- 44、圳临界线网络科技有限公司
- 45、广州知识圈网络科技有限公司
- 46、国誉商业上海有限公司
- 47、海尔消费金融有限公司,嗨付、够花【海尔】
- 48、广州巴图鲁信息科技有限公司
- 49、深圳市鹏海运电子数据交换有限公司
- 50、深圳市亚飞电子商务有限公司
- 51、上海趣医网络有限公司
- 52、聚金资本
- 53、北京父母邦网络科技有限公司
- 54、中山元赫软件科技有限公司
- 55、中商惠民(北京)电子商务有限公司
- 56、凯京集团
- 57、华夏票联(北京)科技有限公司
- 58、拍拍贷【拍拍贷】
- 59、北京尚德机构在线教育有限公司
- 60、任子行股份有限公司
- 61、北京时态电子商务有限公司
- 62、深圳卷皮网络科技有限公司
- 63、北京安博通科技股份有限公司
- 64、未来无线网
- 65、厦门瓷禧网络有限公司
- 66、北京递蓝科软件股份有限公司
- 67、郑州创海软件科技公司
- 68、北京国槐信息科技有限公司
- 69、浪潮软件集团
- 70、多立恒(北京)信息技术有限公司
- 71、广州极迅客信息科技有限公司
- 72、赫基(**)集团股份有限公司
- 73、海投汇
- 74、上海润益创业孵化器管理股份有限公司
- 75、汉纳森(厦门)数据股份有限公司
- 76、安信信托
- 77、岚儒财富
- 78、捷道软件
- 79、湖北享七网络科技有限公司
- 80、湖南创发科技责任有限公司
- 81、深圳小安时代互联网金融服务有限公司
- 82、湖北享七网络科技有限公司
- 83、钱包行云(北京)科技有限公司
- 84、360金融【360】
- 85、易企秀
- 86、摩贝(上海)生物科技有限公司
- 87、广东芯智慧科技有限公司
- 88、联想集团【联想】
- 89、怪兽充电
- 90、行圆汽车
- 91、深圳店店通科技邮箱公司
- 92、京东【京东】
- 93、米庄理财
- 94、咖啡易融
- 95、梧桐诚选
- 96、恒大地产【恒大】
- 97、昆明龙慧
- 98、上海涩瑶软件
- 99、易信【网易】
- 100、铜板街
- 101、杭州云若网络科技有限公司
- 102、特百惠(**)有限公司
- 103、常山众卡运力供应链管理有限公司
- 104、深圳立创电子商务有限公司
- 105、杭州智诺科技股份有限公司
- 106、北京云漾信息科技有限公司
- 107、深圳市多银科技有限公司
- 108、亲宝宝
- 109、上海博卡软件科技有限公司
- 110、智慧树在线教育平台
- 111、米族金融
- 112、北京辰森世纪
- 113、云南滇医通
- 114、广州市分领网络科技有限责任公司
- 115、浙江微能科技有限公司
- 116、上海馨飞电子商务有限公司
- 117、上海宝尊电子商务有限公司
- 118、直客通科技技术有限公司
- 119、科度科技有限公司
- 120、上海数慧系统技术有限公司
- 121、我的医药网
- 122、多粉平台
- 123、铁甲二手机
- 124、上海海新得数据技术有限公司
- 125、深圳市珍爱网信息技术有限公司【珍爱网】
- 126、小蜜蜂
- 127、吉荣数科技
- 128、上海恺域信息科技有限公司
- 129、广州荔支网络有限公司【荔枝FM】
- 130、杭州闪宝科技有限公司
- 131、北京互联新网科技发展有限公司
- 132、誉道科技
- 133、山西兆盛房地产开发有限公司
- 134、北京蓝睿通达科技有限公司
- 135、月亮小屋(**)有限公司【蓝月亮】
- 136、青岛国瑞信息技术有限公司
- 137、博雅云计算(北京)有限公司
- 138、华泰证券香港子公司
- 139、杭州东方通信软件技术有限公司
- 140、武汉博晟安全技术股份有限公司
- 141、深圳市六度人和科技有限公司
- 142、杭州趣维科技有限公司(小影)
- 143、宁波单车侠之家科技有限公司【单车侠】
- 144、丁丁云康信息科技(北京)有限公司
- 145、云钱袋
- 146、南京中兴力维
- 147、上海矽昌通信技术有限公司
- 148、深圳萨科科技
- 149、中通服创立科技有限责任公司
- 150、深圳市对庄科技有限公司
- 151、上证所信息网络有限公司
- 152、杭州火烧云科技有限公司【婚礼纪】
- 153、天津青芒果科技有限公司【芒果头条】
- 154、长飞光纤光缆股份有限公司
- 155、世纪凯歌(北京)医疗科技有限公司
- 156、浙江霖梓控股有限公司
- 157、江西腾飞网络技术有限公司
- 158、安迅物流有限公司
- 159、肉联网
- 160、北京北广梯影广告传媒有限公司
- 161、上海数慧系统技术有限公司
- 162、大志天成
- 163、上海云鹊医
- 164、上海云鹊医
- 165、墨迹天气【墨迹天气】
- 166、上海逸橙信息科技有限公司
- 167、沅朋物联
- 168、杭州恒生云融网络科技有限公司
- 169、绿米联创
- 170、重庆易宠科技有限公司
- 171、安徽引航科技有限公司(乐职网)
- 172、上海数联医信企业发展有限公司
- 173、良彬建材
- 174、杭州求是同创网络科技有限公司
- 175、荷马国际
- 176、点雇网
- 177、深圳市华星光电技术有限公司
- 178、厦门神州鹰软件科技有限公司
- 179、深圳市招商信诺人寿保险有限公司
- 180、上海好屋网信息技术有限公司
- 181、海信集团【海信】
- 182、信凌可信息科技(上海)有限公司
- 183、长春天成科技发展有限公司
- 184、用友金融信息技术股份有限公司【用友】
- 185、北京咖啡易融有限公司
- 186、国投瑞银基金管理有限公司
- 187、晋松(上海)网络信息技术有限公司
- 188、深圳市随手科技有限公司【随手记】
- 189、深圳水务科技有限公司
- 190、易企秀【易企秀】
- 191、北京磁云科技
- 192、南京蜂泰互联网科技有限公司
- 193、章鱼直播
- 194、奖多多科技
- 195、天津市神州商龙科技股份有限公司
- 196、岩心科技
- 197、车码科技(北京)有限公司
- 198、贵阳市投资控股集团
- 199、康旗股份
- 200、龙腾出行
- 201、杭州华量软件
- 202、合肥顶岭医疗科技有限公司
- 203、重庆表达式科技有限公司
- 204、上海米道信息科技有限公司
- 205、北京益友会科技有限公司
- 206、北京融贯电子商务有限公司
- 207、**外汇交易中心
- 208、**外运股份有限公司
- 209、**上海晓圈教育科技有限公司
- 210、普联软件股份有限公司
- 211、北京科蓝软件股份有限公司
- 212、江苏斯诺物联科技有限公司
- 213、北京搜狐-狐友【搜狐】
- 214、新大陆网商金融
- 215、山东神码中税信息科技有限公司
- 216、河南汇顺网络科技有限公司
- 217、北京华夏思源科技发展有限公司
- 218、上海东普信息科技有限公司
- 219、上海鸣勃网络科技有限公司
- 220、广东学苑教育发展有限公司
- 221、深圳强时科技有限公司
- 222、上海云砺信息科技有限公司
- 223、重庆愉客行网络有限公司
- 224、数云
- 225、国家电网运检部
- 226、杭州找趣
- 227、浩鲸云计算科技股份有限公司
- 228、科大讯飞【科大讯飞】
- 229、杭州行装网络科技有限公司
- 230、即有分期金融
- 231、深圳法司德信息科技有限公司
- 232、上海博复信息科技有限公司
- 233、杭州云嘉云计算有限公司
- 234、有家民宿(有家美宿)
- 235、北京赢销通软件技术有限公司
- 236、浙江聚有财金融服务外包有限公司
- 237、易族智汇(北京)科技有限公司
- 238、合肥顶岭医疗科技开发有限公司
- 239、车船宝(深圳)旭珩科技有限公司)
- 240、广州富力地产有限公司
- 241、氢课(上海)教育科技有限公司
- 242、武汉氪细胞网络技术有限公司
- 243、杭州有云科技有限公司
- 244、上海仙豆智能机器人有限公司
- 245、拉卡拉支付股份有限公司【拉卡拉】
- 246、虎彩印艺股份有限公司
- 247、北京数微科技有限公司
- 248、广东智瑞科技有限公司
- 249、找钢网
- 250、九机网
- 251、杭州跑跑网络科技有限公司
- 252、深圳未来云集
- 253、杭州每日给力科技有限公司
- 254、上海齐犇信息科技有限公司
- 255、滴滴出行【滴滴】
- 256、合肥云诊信息科技有限公司
- 257、云知声智能科技股份有限公司
- 258、南京坦道科技有限公司
- 259、爱乐优(二手平台)
- 260、猫眼电影(私有化部署)【猫眼电影】
- 261、美团大象(私有化部署)【美团大象】
- 262、作业帮教育科技(北京)有限公司【作业帮】
- 263、北京小年糕互联网技术有限公司
- 264、山东矩阵软件工程股份有限公司
- 265、陕西国驿软件科技有限公司
- 266、君开信息科技
- 267、村鸟网络科技有限责任公司
- 268、云南国际信托有限公司
- 269、金智教育
- 270、珠海市筑巢科技有限公司
- 271、上海百胜软件股份有限公司
- 272、深圳市科盾科技有限公司
- 273、哈啰出行【哈啰】
- 274、途虎养车【途虎】
- 275、卡思优派人力资源集团
- 276、南京观为智慧软件科技有限公司
- 277、杭州城市大脑科技有限公司
- 278、猿辅导【猿辅导】
- 279、洛阳健创网络科技有限公司
- 280、魔力耳朵
- 281、亿阳信通
- 282、上海招鲤科技有限公司
- 283、四川商旅无忧科技服务有限公司
- 284、UU跑腿
- 285、北京老虎证券【老虎证券】
- 286、悠活省吧(北京)网络科技有限公司
- 287、F5未来商店
- 288、深圳环阳通信息技术有限公司
- 289、遠傳電信
- 290、作业帮(北京)教育科技有限公司【作业帮】
- 291、成都科鸿智信科技有限公司
- 292、北京木屋时代科技有限公司
- 293、大学通(哈尔滨)科技有限责任公司
- 294、浙江华坤道威数据科技有限公司
- 295、吉祥航空【吉祥航空】
- 296、南京圆周网络科技有限公司
- 297、广州市洋葱omall电子商务
- 298、天津联物科技有限公司
- 299、跑哪儿科技(北京)有限公司
- 300、深圳市美西西餐饮有限公司(喜茶)
- 301、平安不动产有限公司【平安】
- 302、江苏中海昇物联科技有限公司
- 303、湖南牙医帮科技有限公司
- 304、重庆民航凯亚信息技术有限公司(易通航)
- 305、递易(上海)智能科技有限公司
- 306、亚朵
- 307、浙江新课堂教育股份有限公司
- 308、北京蜂创科技有限公司
- 309、德一智慧城市信息系统有限公司
- 310、北京翼点科技有限公司
- 311、湖南智数新维度信息科技有限公司
- 312、北京玖扬博文文化发展有限公司
- 313、上海宇珩信息科技有限公司
- 314、全景智联(武汉)科技有限公司
- 315、天津易客满国际物流有限公司
- 316、南京爱福路汽车科技有限公司
- 317、我房旅居集团
- 318、湛江亲邻科技有限公司
- 319、深圳市姜科网络有限公司
- 320、青岛日日顺物流有限公司
- 321、南京太川信息技术有限公司
- 322、美图之家科技有限公司【美图】
- 323、南京太川信息技术有限公司
- 324、众薪科技(北京)有限公司
- 325、武汉安安物联科技有限公司
- 326、北京智客朗道网络科技有限公司
- 327、深圳市超级猩猩健身管理管理有限公司
- 328、重庆达志科技有限公司
- 329、上海享评信息科技有限公司
- 330、薪得付信息科技
- 331、跟谁学
- 332、中道(苏州)旅游网络科技有限公司
- 333、广州小卫科技有限公司
- 334、上海非码网络科技有限公司
- 335、途家网网络技术(北京)有限公司【途家】
- 336、广州辉凡信息科技有限公司
- 337、天维尔信息科技股份有限公司
- 338、上海极豆科技有限公司
- 339、苏州触达信息技术有限公司
- 340、北京热云科技有限公司
- 341、中智企服(北京)科技有限公司
- 342、易联云计算(杭州)有限责任公司
- 343、青岛航空股份有限公司【青岛航空】
- 344、山西博睿通科技有限公司
- 345、网易杭州网络有限公司【网易】
- 346、北京果果乐学科技有限公司
- 347、百望股份有限公司
- 348、中保金服(深圳)科技有限公司
- 349、天津运友物流科技股份有限公司
- 350、广东创能科技股份有限公司
- 351、上海倚博信息科技有限公司
- 352、深圳百果园实业(集团)股份有限公司
- 353、广州细刻网络科技有限公司
- 354、武汉鸿业众创科技有限公司
- 355、金锡科技(广州)有限公司
- 356、易瑞国际电子商务有限公司
- 357、奇点云
- 358、中视信息科技有限公司
- 359、开源项目:datax-web
- 360、云知声智能科技股份有限公司
- 361、开源项目:bboss
- 362、成都深驾科技有限公司
- 363、FunPlus【趣加】
- 364、杭州创匠信科技有限公司
- 365、龙匠(北京)科技发展有限公司
- 366、广州一链通互联网科技有限公司
- 367、上海星艾网络科技有限公司
- 368、虎博网络技术(上海)有限公司
- 369、青岛优米信息技术有限公司
- 370、八维通科技有限公司
- 371、烟台合享智星数据科技有限公司
- 372、东吴证券股份有限公司
- 373、中通云仓股份有限公司【中通】
- 374、北京加菲猫科技有限公司
- 375、北京匠心演绎科技有限公司
- 376、宝贝走天下
- 377、厦门众库科技有限公司
- 378、海通证券数据中心
- 389、湖南快乐通宝小额贷款有限公司
- 380、浙江大华技术股份有限公司
- 381、杭州魔筷科技有限公司
- 382、青岛掌讯通区块链科技有限公司
- 383、新大陆金融科技
- 384、常州玺拓软件科技有限公司
- 385、北京正保网格教育科技有限公司
- 386、统一企业(**)投资有限公司【统一】
- 387、微革网络科技有限公司
- 388、杭州融易算科技有限公司
- 399、青岛上啥班网络科技有限公司
- 390、京东酒世界
- 391、杭州爱博仕科技有限公司
- 392、五星金服控股有限公司
- 393、福建乐摩物联科技有限公司
- 394、百炼智能科技有限公司
- 395、山东能源数智云科技有限公司
- 396、招商局能源运输股份有限公司
- 397、三一集团【三一】
- 398、东巴文(深圳)健康管理有限公司
- 399、索易软件
- 400、深圳市宁远科技有限公司
- 401、熙牛医疗
- 402、南京智鹤电子科技有限公司
- 403、嘀嗒出行【嘀嗒出行】
- 404、广州虎牙信息科技有限公司【虎牙】
- 405、广州欧莱雅百库网络科技有限公司【欧莱雅】
- 406、微微科技有限公司
- 407、我爱我家房地产经纪有限公司【我爱我家】
- 408、九号发现
- 409、薪人薪事
- 410、武汉氪细胞网络技术有限公司
- 411、广州市斯凯奇商业有限公司
- 412、微淼商学院
- 413、杭州车盛科技有限公司
- 414、深兰科技(上海)有限公司
- 415、安徽中科美络信息技术有限公司
- 416、比亚迪汽车工业有限公司【比亚迪】
- 417、湖南小桔信息技术有限公司
- 418、安徽科大国创软件科技有限公司
- 419、克而瑞
- 420、陕西云基华海信息技术有限公司
- 421、安徽深宁科技有限公司
- 422、广东康爱多数字健康有限公司
- 423、嘉里电子商务
- 424、上海时代光华教育发展有限公司
- 425、CityDo
- 426、上海禹知信息科技有限公司
- 427、广东智瑞科技有限公司
- 428、西安爱铭网络科技有限公司
- 429、心医国际数字医疗系统(大连)有限公司
- 430、乐其电商
- 431、锐达科技
- 432、天津长城滨银汽车金融有限公司
- 433、代码网
- 434、东莞市东城乔伦软件开发工作室
- 435、浙江百应科技有限公司
- 436、上海力爱帝信息技术有限公司(Red E)
- 437、云徙科技有限公司
- 438、北京康智乐思网络科技有限公司【大姨吗APP】
- 439、安徽开元瞬视科技有限公司
- 440、立方
- 441、厦门纵行科技
- 442、乐山-菲尼克斯半导体有限公司
- 443、武汉光谷联合集团有限公司
- 444、上海金仕达软件科技有限公司
- 445、深圳易世通达科技有限公司
- 446、爱动超越人工智能科技(北京)有限责任公司
- 447、迪普信(北京)科技有限公司
- 448、掌站科技(北京)有限公司
- 449、深圳市华云中盛股份有限公司
- 450、上海原圈科技有限公司
- 451、广州赞赏信息科技有限公司
- 452、Amber Group
- 453、德威国际货运代理(上海)公司
- 454、浙江杰夫兄弟智慧科技有限公司
- 455、信也科技
- 456、开思时代科技(深圳)有限公司
- 457、大连槐德科技有限公司
- 458、同程生活
- 459、松果出行
- 460、企鹅杏仁集团
- 461、宁波科云信息科技有限公司
- 462、上海格蓝威驰信息科技有限公司
- 463、杭州趣淘鲸科技有限公司
- 464、湖州市数字惠民科技有限公司
- 465、乐普(北京)医疗器械股份有限公司
- 466、广州市晴川高新技术开发有限公司
- 467、山西缇客科技有限公司
- 468、徐州卡西穆电子商务有限公司
- 469、格创东智科技有限公司
- 470、世纪龙信息网络有限责任公司
- 471、邦道科技有限公司
- 472、河南中盟新云科技股份有限公司
- 473、横琴人寿保险有限公司
- 474、上海海隆华钟信息技术有限公司
- 475、上海久湛
- 476、上海仙豆智能机器人有限公司
- 477、广州汇尚网络科技有限公司
- 478、深圳市阿卡索资讯股份有限公司
- 479、青岛佳家康健康管理有限责任公司
- 480、蓝城兄弟
- 481、成都天府通金融服务股份有限公司
- 482、深圳云镖网络科技有限公司
- 483、上海影创科技
- 484、成都艾拉物联
- 485、北京客邻尚品网络技术有限公司
- 486、IT实战联盟
- 487、杭州尤拉夫科技有限公司
- 488、中大检测(湖南)股份有限公司
- 489、江苏电老虎工业互联网股份有限公司
- 490、上海助通信息科技有限公司
- 491、北京符节科技有限公司
- 492、杭州英祐科技有限公司
- 493、江苏电老虎工业互联网股份有限公司
- 494、深圳市点猫科技有限公司
- 495、杭州天音
- 496、深圳市二十一科技互联网有限公司
- 497、海南海口翎度科技
- 498、北京小趣智品科技有限公司
- 499、广州石竹计算机软件有限公司
- 500、深圳市惟客数据科技有限公司
- 501、**医疗器械有限公司
- 502、上海云谦科技有限公司
- 503、上海磐农信息科技有限公司
- 504、广州领航食品有限公司
- 505、青岛掌讯通区块链科技有限公司
- 506、北京新网数码信息技术有限公司
- 507、超体信息科技(深圳)有限公司
- 508、长沙店帮手信息科技有限公司
- 509、上海助弓装饰工程有限公司
- 510、杭州寻联网络科技有限公司
- 511、成都大淘客科技有限公司
- 512、松果出行
- 513、深圳市唤梦科技有限公司
- 514、上汽集团商用车技术中心
- 515、北京中航讯科技股份有限公司
- 516、北龙中网(北京)科技有限责任公司
- 517、前海超级前台(深圳)信息技术有限公司
- 518、上海中商网络股份有限公司
- 519、上海助通信息科技有限公司
- 520、宁波聚臻智能科技有限公司
- 521、上海零动数码科技股份有限公司
- 522、浙江学海教育科技有限公司
- 523、聚学云(山东)信息技术有限公司
- 524、多氟多新材料股份有限公司
- 525、智慧眼科技股份有限公司
- 526、广东智通人才连锁股份有限公司
- 527、世纪开元智印互联科技集团股份有限公司
- 528、北京理想汽车【理想汽车】
- 529、巽逸科技(重庆)有限公司
- 530、义乌购电子商务有限公司
- 531、深圳市珂莱蒂尔服饰有限公司
- 532、江西国泰利民信息科技有限公司
- 533、广西广电大数据科技有限公司
- 534、杭州艾麦科技有限公司
- 535、广州小滴科技有限公司
- 536、佳缘科技股份有限公司
- 537、上海深擎信息科技有限公司
- 538、武商网
- 539、福建民本信息科技有限公司
- 540、杭州惠合信息科技有限公司
- 541、厦门爱立得科技有限公司
- 542、成都拟合未来科技有限公司
- 543、宁波聚臻智能科技有限公司
- 544、广东百慧科技有限公司
- 545、笨马网络
- 546、深圳市信安数字科技有限公司
- 547、深圳市思乐数据技术有限公司
- 548、四川绿源集科技有限公司
- 549、湖南云医链生物科技有限公司
- 550、杭州源诚科技有限公司
- 551、北京开课吧科技有限公司
- 552、北京多来点信息技术有限公司
- 553、JEECG BOOT低代码开发平台
- 554、苏州同元软控信息技术有限公司
- 555、江苏大泰信息技术有限公司
- 556、北京大禹汇智
- 557、北京盛哲科技有限公司
- 558、广州钛动科技有限公司
- 559、北京大禹汇智科技有限公司
- 560、湖南鼎翰文化股份有限公司
- 561、苏州安软信息科技有限公司
- 562、芒果tv
- 563、上海艺赛旗软件股份有限公司
- 564、中盈优创资讯科技有限公司
- 565、乐乎公寓
- 566、启明信息
- 567、苏州安软
- 568、南京富金的软件科技有限公司
- 569、深圳市新科聚合网络技术有限公司
- 570、你好现在(北京)科技股份有限公司
- 571、360考试宝典
- 572、北京一零科技有限公司
- 573、厦门星纵信息
- 574、Dalligent Solusi Indonesia
- 575、深圳华普物联科技有限公司
- 576、深圳行健自动化股份有限公司
- 577、深圳市富融信息科技服务有限公司
- 578、蓝鸟云
- 579、上海澎博财经资讯有限公司
- 580、北京小鸦科技有限公司
- 581、杭州盈泉云科技有限公司
- 582、惟客数据
- 583、GOSO香蜜闺秀
- 584、普乐师(上海)数字科技有限公司
- 585、西安市雁塔区咖北堂网络科技部
- 586、宁波聚臻智能科技有限公司
- 587、普乐师数字科技有限公司
- 588、江苏蟹联网科技有限公司
- 589、杭州未智科技有限公司
- 590、安吉智行物流有限公司
- 591、华生大家居集团有限公司
- 592、美心食品(广州)有限公司
- 593、货拉拉【货拉拉APP】
- 594、杭州思韬瑞科技有限公司
- 595、杭州玖融科技有限公司
- 596、北京优海网络科技有限公司
- 597、浙江大维高新技术股份有限公司
- 598、粤港澳大湾区数字经济研究院
- 599、普康(杭州)健康科技有限公司
- 600、华西证券股份有限公司【华西证券】
- 601、杭州海康机器人股份有限公司【海康】
- 602、河南宸邦信息技术有限公司
- 603、成都次元节点网络科技有限公司
- 604、富士康科技集团【富士康】
- 605、青岛东软载波科技股份有限公司
- 606、小菊快跑科技有限公司
- 607、视源股份
- 608、宁波聚臻智能科技有限公司
- 609、阔天科技有限公司
- 610、网宿科技有限公司
- 611、南京梵鼎信息技术有限公司
- 612、房天下【房天下】
- 613、特瓦特能源科技有限公司
- 614、拓迪智能科技有限公司
- 615、东软集团【东软】
- 616、开普云
- 617、领课网络
- 618、南京特维软件有限公司
- 619、福建易联众保睿通信息科技有限公司
- 620、浙江核心同花顺金融科技有限公司【同花顺】
- 621、浙江博观瑞思科技有限公司
- 622、北京新美互通科技有限公司
- 623、北京有生博大软件股份有限公司
- 624、时代**
- 625、鱼泡网
- 626、一粒方糖(安徽)科技有限公司
- 627、北京外研在线数字科技有限公司
- 628、德电(**)通信技术有限公司
- 629、杭州寻联网络科技有限公司
- 630、橙联(**)有限公司
- 631、北京承启通科技有限公司
- 632、银联数据服务有限公司【银联】
- 633、上海晶确科技有限公司
- 634、亚信科技有限公司
- 635、福建新航物联网科技有限公司
- 636、上扬软件
- 637、深蓝汽车科技有限公司
- 638、南昌节点汇智科技有限公司
- 639、锐明技术
- 640、再造再生健康科技有限公司
- 641、华宝证券
- 642、卓正医疗
- 643、深圳湛信科技
- 644、陕西鑫众为软件有限公司
- 645、深圳市润农科技有限公司
- 646、庚商教育智能科技有限公司
- 647、杭州祎声科技
- 648、四川久远银海软件股份有限公司
- 649、GeeFox极狐低代码
- 650、浙江和仁科技股份有限公司
- 651、宁波聚臻智能科技有限公司
- 652、福建福昕软件开发股份有限公司【福昕】
- 653、广州中长康达信息技术有限公司
- 654、武汉趣改信息科技有限公司
- ……

更多接入的公司,欢迎在 登记地址 登记,登记仅仅为了产品推广。

欢迎大家的关注和使用,XXL-JOB也将拥抱变化,持续发展。

Contributing

Contributions are welcome! Open a pull request to fix a bug, or open an Issue to discuss a new feature or change.

欢迎参与项目贡献!比如提交PR修复一个bug,或者新建 Issue 讨论新特性或者变更。

Copyright and License

This product is open source and free, and will continue to provide free community technical support. Individual or enterprise users are free to access and use.

  • Licensed under the GNU General Public License (GPL) v3.
  • Copyright (c) 2015-present, xuxueli.

产品开源免费,并且将持续提供免费的社区技术支持。个人或企业内部可自由的接入和使用。如有需要可 邮件联系 作者免费获取项目授权。

xxl-job's People

Contributors

1423302537 avatar abel533 avatar clipperl avatar cyyhyq avatar denghuafeng avatar fijileijun avatar gongstring avatar icyblazek avatar j112929 avatar jackyrao2 avatar jianzhiunique avatar lizhennet avatar llnancy avatar lzwcyd avatar majinding avatar mayben0t avatar meigesir avatar mrwb avatar oszhugc avatar paopaofish avatar qinnnyul avatar sky-dawn avatar souvckeji avatar thinkingfioa avatar tomzhang170 avatar uliian avatar weizibin avatar wnewey avatar xuxueli avatar zaomianbao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xxl-job's Issues

对临时一次性任务的支持

BEAN 模式只能在页面进行添加任务吗?我们业务很多临时的只需要执行一次的定时任务。想在代码里里面动态添加怎么做?

job执行的进度反馈

执行器执行耗时job,加入进度反馈的可选接口是不是更好?现在的只能通过非实时的执行日志(需要手动刷新)来查看进度(还需要JobHandler里打好日志)

Tomcat正常停止后日志出现大量错误,同时tomcat进程无法正常停止

今天发现一个新问题,执行shutdown.sh正常停止, 日志出现大量错误,同时tomcat进程无法正常停止。下面是日志信息:

21-Apr-2017 11:06:02.552 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [xxl-job-executor-example-1.6.2-SNAPSHOT] appears to have started a thread named [pool-1-thread-193] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 java.lang.Thread.run(Thread.java:745)
21-Apr-2017 11:06:02.553 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [xxl-job-executor-example-1.6.2-SNAPSHOT] appears to have started a thread named [pool-1-thread-194] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 java.lang.Thread.run(Thread.java:745)

集成mycat遇到的问题

xxl-job数据源使用mycat的时候会出现任务在暂停之后,在org.quartz.jobStore.misfireThreshold: 60000 这个时间过后,会被自动恢复到normal状态,直连数据库不会出现以上问题,谨记!

0.0.0.0:9999: java.net.BindException: Address already in use

直接使用新的war覆盖老的war包时出现下面错误日志。同时tomcat也无法正常停止,需要手动kill。

2017-04-20 11:13:29 xxl-job-executor-example [com.mchange.v2.log.MLog]-[MLog-Init-Reporter]-[log]-[212]-[INFO] MLog clients using slf4j logging.
2017-04-20 11:13:30 xxl-job-executor-example [com.mchange.v2.c3p0.C3P0Registry]-[localhost-startStop-1]-[log]-[212]-[INFO] Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
2017-04-20 11:13:30 xxl-job-executor-example [com.xxl.job.core.executor.XxlJobExecutor]-[localhost-startStop-1]-[registJobHandler]-[109]-[INFO] xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.executor.service.jobhandler.DemoJobHandler@1a28d110
2017-04-20 11:13:30 xxl-job-executor-example [com.xxl.job.core.executor.XxlJobExecutor]-[localhost-startStop-1]-[registJobHandler]-[109]-[INFO] xxl-job register jobhandler success, name:krisJobHandler, jobHandler:com.xxl.job.executor.service.jobhandler.KrisJobHandler@36bcb2d2
2017-04-20 11:13:30 xxl-job-executor-example [org.springframework.web.context.ContextLoader]-[localhost-startStop-1]-[initWebApplicationContext]-[325]-[INFO] Root WebApplicationContext: initialization completed in 404 ms
2017-04-20 11:13:30 xxl-job-executor-example [org.eclipse.jetty.server.Server]-[Thread-5]-[doStart]-[272]-[INFO] jetty-8.2.0.v20160908
2017-04-20 11:13:30 xxl-job-executor-example [org.eclipse.jetty.util.component.AbstractLifeCycle]-[Thread-5]-[setFailed]-[204]-[WARN] FAILED [email protected]:9999: java.net.BindException: Address already in use
java.net.BindException: Address already in use
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
	at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at org.eclipse.jetty.server.Server.doStart(Server.java:293)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer$1.run(JettyServer.java:42)
	at java.lang.Thread.run(Thread.java:745)
2017-04-20 11:13:30 xxl-job-executor-example [org.eclipse.jetty.util.component.AbstractLifeCycle]-[Thread-5]-[setFailed]-[204]-[WARN] FAILED org.eclipse.jetty.server.Server@368659c1: java.net.BindException: Address already in use
java.net.BindException: Address already in use
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
	at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at org.eclipse.jetty.server.Server.doStart(Server.java:293)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer$1.run(JettyServer.java:42)
	at java.lang.Thread.run(Thread.java:745)
2017-04-20 11:13:30 xxl-job-executor-example [com.xxl.job.core.rpc.netcom.jetty.server.JettyServer]-[Thread-5]-[run]-[48]-[ERROR] 
java.net.BindException: Address already in use
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
	at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at org.eclipse.jetty.server.Server.doStart(Server.java:293)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer$1.run(JettyServer.java:42)
	at java.lang.Thread.run(Thread.java:745)
2017-04-20 11:13:45 xxl-job-executor-example [org.springframework.web.context.support.XmlWebApplicationContext]-[localhost-startStop-2]-[doClose]-[1048]-[INFO] Closing Root WebApplicationContext: startup date [Thu Apr 20 11:13:29 CST 2017]; root of context hierarchy
2017-04-20 11:13:45 xxl-job-executor-example [org.springframework.beans.factory.support.DefaultListableBeanFactory]-[localhost-startStop-2]-[destroySingletons]-[444]-[INFO] Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@7b84b764: defining beans [propertyConfigurer,demoJobHandler,krisJobHandler,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,xxlJobExecutor,glueFactory,xxlJobDataSource,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy
2017-04-20 11:13:45 xxl-job-executor-example [com.xxl.job.core.rpc.netcom.jetty.server.JettyServer]-[localhost-startStop-2]-[destroy]-[63]-[ERROR] 
java.lang.IllegalStateException: !STOPPED
	at org.eclipse.jetty.server.handler.HandlerWrapper.destroy(HandlerWrapper.java:172)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer.destroy(JettyServer.java:61)
	at com.xxl.job.core.rpc.netcom.NetComServerFactory.destroy(NetComServerFactory.java:31)
	at com.xxl.job.core.executor.XxlJobExecutor.destroy(XxlJobExecutor.java:60)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:328)
	at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:254)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:510)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:486)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:751)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:455)
	at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1096)
	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1070)
	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1016)
	at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:586)
	at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143)
	at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4792)
	at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5429)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1435)
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1424)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
2017-04-20 11:13:45 xxl-job-executor-example [com.xxl.job.core.rpc.netcom.jetty.server.JettyServer]-[localhost-startStop-2]-[destroy]-[69]-[INFO] >>>>>>>>>>> xxl-rpc server destroy success, netcon=com.xxl.job.core.rpc.netcom.jetty.server.JettyServer
2017-04-20 11:14:06 xxl-job-executor-example [org.springframework.web.context.ContextLoader]-[localhost-startStop-1]-[initWebApplicationContext]-[285]-[INFO] Root WebApplicationContext: initialization started
2017-04-20 11:14:06 xxl-job-executor-example [org.springframework.web.context.support.XmlWebApplicationContext]-[localhost-startStop-1]-[prepareRefresh]-[515]-[INFO] Refreshing Root WebApplicationContext: startup date [Thu Apr 20 11:14:06 CST 2017]; root of context hierarchy

日志页面,查看 执行日志 问题

logDetailPage输出内容是:
http statusCode error,statusCode:500
console 输出:
2016-08-12 08:49:14.445 WARN 10496 --- [ol-1-thread-188] o.e.jetty.server.AbstractHttpConnection : /

java.lang.NullPointerException: null
at java.io.File.(File.java:277)
at com.ouyeel.xservices.job.core.log.XxlJobFileAppender.readLog(XxlJobFileAppender.java:121)
at com.ouyeel.xservices.job.core.handler.HandlerRepository.service(HandlerRepository.java:152)
at com.ouyeel.xservices.job.core.executor.jetty.XxlJobExecutorHandler.handle(XxlJobExecutorHandler.java:35)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:369)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:464)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:924)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:985)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
求前辈指点方向

在执行器里增加JavaMelody监控时,会导致调度不成功。

在执行器项目中增加了JavaMelody配置已监控项目运行情况。
web.xml增加配置:
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:monitoring-spring.xml classpath:applicationcontext-xxl-job.xml </param-value> </context-param>
<filter> <filter-name>javamelody</filter-name> <filter-class>net.bull.javamelody.MonitoringFilter</filter-class> <init-param> <param-name>log</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>javamelody</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <listener> <listener-class>net.bull.javamelody.SessionListener</listener-class> </listener>
monitoring-spring.xml文件为:
`

<!--图表spring-->
<bean id="facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
    <property name="pointcut">
        <bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
            <property name="pattern" value="com.meyacom.crm.*" />
        </bean>
    </property>
</bean>

<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

<!--图表sql-->
<bean id="springDataSourceBeanPostProcessor" class="net.bull.javamelody.SpringDataSourceBeanPostProcessor">
    <!--
    <property name="excludedDatasources">
        <set>
            <value>excludedDataSourceName</value>
        </set>
    </property>
    -->
</bean>

<bean id="ProxyFactoryBean" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="interceptorNames">
        <list>
            <value>facadeMonitoringAdvisor</value>
        </list>
    </property>
</bean>

`

增加以上配置后会导致只能执行GLUE模式的任务,执行JobHandler调度失败。错误信息:
`Trigger running,

[address] : 10.0.0.173:9034,
[status] : FAIL,
[msg] : job handler for jobKey=[1_201612232118460184] not found. `
jobKey是存在的,关掉JavaMelody可以正常执行。

任务执行失败

用的1.7.1版本,任务执行,执行器提示:java.lang.RuntimeException: Servet-error:Read timed out
请问,这个是什么原因,该如何解决?

项目用jetty启动,进入任务的列表总是报错

java.io.IOException: FULL head
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:276)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

导致任务显示不出来。

org.mortbay.jetty
maven-jetty-plugin
6.1.7



8090
30000



NullPointerException

我将executor-example中的log4j.xml 变成 log4j.properties

代码如下

`
log4j.rootLogger=CONSOLE,FILE,job
log4j.addivity.org.apache=true

log4j.logger.com.chinasofti.ark.bdadp.schedule.core =CONSOLE,FILE,job
log4j.logger.com.chinasofti.ark.executor =CONSOLE,FILE,job

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.file=../logs/executor-example.log
log4j.appender.FILE.append=true
log4j.appender.FILE.encoding=UTF-8
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n

log4j.appender.job=com.chinasofti.ark.bdadp.schedule.core.log.JobFileAppender
log4j.appender.job.filePath=../logs/jobhandler/
log4j.appender.job.layout=org.apache.log4j.PatternLayout
log4j.appender.job.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n
`

调度中心运行job,一直提示XxlJobFileAppender.java 中fos.write(layout.format(event).getBytes("utf-8"));的layout为null,,,我使用的版本是1.6.1-SNAPSHOT

java.lang.IllegalStateException: Optional int parameter 'jobId'

每隔几分钟跑默认的shell脚本任务,会不时出现如下异常:
2017-04-28 09:29:58,575 - xxl-job-admin - INFO [com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler]- <>>>>>>>>>>> resumeJob success, JobGroup:2, JobName:1>
2017-04-28 09:31:09,281 - xxl-job-admin - ERROR [com.xxl.job.admin.controller.resolver.WebExceptionResolver] - WebExceptionResolver:{}
java.lang.IllegalStateException: Optional int parameter 'jobId' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.handleNullValue(AbstractNamedValueMethodArgumentResolver.java:188)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:94)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:743)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:672)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:82)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:867)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:951)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:827)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2017-04-28 09:32:01,157 - xxl-job-admin - INFO [com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler]- <>>>>>>>>>>> runJob success, jobKey:2.1>

image

groovy: 16: unexpected token: /bin/sh

在Glue上写了下面代码

package com.xxl.job.service.handler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;

import com.xxl.job.core.handler.IJobHandler;

public class DemoGlueJobHandler extends IJobHandler {
	private static transient Logger logger = LoggerFactory.getLogger(DemoGlueJobHandler.class);

	@Override
	public void execute(String... params) throws Exception {
  
        Process process;  
      	String[] args = new String[]{"/bin/sh", "-c", "ls -l"};
        process = Runtime.getRuntime().exec(args,null,null);  
        InputStreamReader ir = new InputStreamReader(process  
                .getInputStream());  
        LineNumberReader input = new LineNumberReader(ir);  
        String line;  
        process.waitFor();  
        while ((line = input.readLine()) != null){  
            logger.info("XXL-JOB output shell: " + line);
        }		
	}

}

后台日志输出如下错误:

2017-04-19 20:51:18 xxl-job-executor-example [com.xxl.job.core.biz.impl.ExecutorBizImpl]-[pool-1-thread-23]-[run]-[107]-[ERROR] 
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script14926062784321569856516.groovy: 16: unexpected token: /bin/sh @ line 16, column 37.
         	String[] args = new String[]{"/bin/sh", "-c", "ls -l"};
                                       ^

1 error

	at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
	at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
	at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
	at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
	at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:360)
	at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:145)
	at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:111)
	at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:237)
	at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:167)
	at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:931)
	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593)
	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:212)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:222)
	at com.xxl.job.core.glue.GlueFactory.loadNewInstance(GlueFactory.java:115)
	at com.xxl.job.core.biz.impl.ExecutorBizImpl.run(ExecutorBizImpl.java:105)
	at com.xxl.job.core.biz.impl.ExecutorBizImpl$$FastClassByCGLIB$$377761dc.invoke(<generated>)
	at org.springframework.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
	at com.xxl.job.core.rpc.netcom.NetComServerFactory.invokeService(NetComServerFactory.java:66)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServerHandler.doInvoke(JettyServerHandler.java:57)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServerHandler.handle(JettyServerHandler.java:30)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
	at org.eclipse.jetty.server.Server.handle(Server.java:370)
	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
	at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984)
	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
	at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

unknown code for readObject at 0x45 (E)

之前可以正常使用,后来引入dubbo 2.5.3,将一些基础服务剥离出去后,再由调度任务调用执行器时,出现以上异常,也可能不是dubbo引起的异常,摸不着解决方案,请教作者

2017-04-21 16:46:29,188 - xxl-job-admin - INFO [com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler] - <>>>>>>>>>>> runJob success, jobKey:4.11>
2017-04-21 16:49:21,995 - xxl-job-admin - ERROR [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>
java.lang.IllegalStateException: unknown code for readObject at 0x45 (E)
at com.xxl.job.core.rpc.serialize.HessianSerializer.deserialize(HessianSerializer.java:33)
at com.xxl.job.core.rpc.netcom.jetty.client.JettyClient.send(JettyClient.java:17)
at com.xxl.job.core.rpc.netcom.NetComClientProxy$1.invoke(NetComClientProxy.java:48)
at com.sun.proxy.$Proxy18.run(Unknown Source)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.runExecutor(RemoteHttpJobBean.java:184)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.doTrigger(RemoteHttpJobBean.java:107)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.executeInternal(RemoteHttpJobBean.java:69)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:114)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: com.caucho.hessian.io.HessianProtocolException: unknown code for readObject at 0x45 (E)
at com.caucho.hessian.io.HessianInput.error(HessianInput.java:1697)
at com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1177)
at com.xxl.job.core.rpc.serialize.HessianSerializer.deserialize(HessianSerializer.java:31)
... 9 more

dubbo相关的配置
<dubbo:registry protocol="zookeeper" address="${service.registry.address}" />

跟踪代码显示:
HttpClientUtil.postRequest() 方法
HttpResponse response = httpClient.execute(httpPost);

HttpResponseProxy{HTTP/1.1 500 Server Error [Connection: close, Server: Jetty(8.2.0.v20160908)] ResponseEntityProxy{[Chunked: false]}}

求教

请教:具体步骤操作

按照maven格式将源码导入IDE(文档以Eclipse为例),更新项目pom依赖,maven编译项目
问题:xxl-job-admin报错,maven update之后还是这样,我开始疑问是不是我导入Eclipse的方式不对,我是通过import-maven-existing Maven Projects 然后选中下载的源码文件夹,这样操作不对吗

关于工作流的概念

就是 A->B -> C -> D 这种情况。
现在只能: 对jobA 设置正确的Cron, BCD 设置一个不执行的corn,
A的子是B B的子是C...
但是查看日志和job 不是很方便

客户端jetty线程池

今天将代码clone下来了,发现客户端使用jetty时线程池中线程开了200个,建议改下。建议日志处理不要强制使用log4j,祝好。

执行任务回调的时候报StringIndexOutOfBoundsException异常

java.lang.StringIndexOutOfBoundsException: String index out of range: 64
at java.lang.String.(Unknown Source)
at com.xxl.job.core.util.ByteHexConverter.hex2Byte(ByteHexConverter.java:30)
at com.xxl.job.core.util.XxlJobNetCommUtil.parseHexJson2Obj(XxlJobNetCommUtil.java:53)
at com.xxl.job.core.util.XxlJobNetCommUtil.postHex(XxlJobNetCommUtil.java:113)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.failoverTrigger(RemoteHttpJobBean.java:126)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.executeInternal(RemoteHttpJobBean.java:61)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:114)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)

// i do not know why
responseHex = responseHex.replace("\n", ""); 也需要过滤下 “\r”

XxlJobNetCommUtil bug?

第95行
// i do not know why
responseHex = responseHex.replace("\n", "");

我的回调中还有 个\r

简单按照readme的步骤部署了war包后,tomcat包无法读取

报无法读取 xxl-job-admin.properties 这个文件。 但是 在 webapps的目录里面是有的,debug看到,程序也找到文件。

但异常就是在PropertiesUtil里的loadProperties方法里抛出的。
in = new InputStreamReader(new FileInputStream(url.getPath()), "UTF-8");
prop.load(in);

绕过登录机制,直接登录后用起来也是没问题的。
是不是Tomcat配置的原因呢?

log日志问题

改造过xxl-job-admin之后,集成了公司的用户单点登录系统,引用公司内部的jar包中有logback依赖,导致logback和log4j冲突,以至于xxl-job-admin的log4j日志设置不起作用,debug日志一直刷
解决方案:pom.xm配置里exclude调logback的jar包依赖即可

启动admin报错

Caused by: freemarker.core._MiscTemplateException: Failed to set setting "xxl.job.mail.password" to value "asdfzxcv"; see cause exception.

jobThread 线程问题

jobThread 每个任务一直有一个线程,当任务执行时间比较长,执行次数比较频繁时,会产生任务积压延迟。

Tips: Cannot run without an instance id error log

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'quartzScheduler' defined in URL [jar:file:/data/WEB-INF/lib/xxl-job-admin-1.3.1-SNAPSHOT.jar!/applicationcontext-xxl-job.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Cannot run without an instance id.
Caused by: java.lang.IllegalStateException: Cannot run without an instance id.
如果日志中有这些的错误提示是因为程序运行获取hostname无法解析造成的,把对应的IP加入DNS或者hosts中就可以了.算是踩了一小坑

关于任务的创建

目前xxl-job支持web页面对任务进行CRUD操作。但是没有api的方式。能否开放一个api接口来增加任务?我测试过xxl-job-admin/jobinfo/add 这个方法模拟表单请求、但是需要登录验证。

日志页面,查看 执行日志 问题

logDetailPage输出内容是:
http statusCode error,statusCode:500
console 输出:
2016-08-12 08:49:14.445 WARN 10496 --- [ol-1-thread-188] o.e.jetty.server.AbstractHttpConnection : /

java.lang.NullPointerException: null
at java.io.File.(File.java:277)
at com.ouyeel.xservices.job.core.log.XxlJobFileAppender.readLog(XxlJobFileAppender.java:121)
at com.ouyeel.xservices.job.core.handler.HandlerRepository.service(HandlerRepository.java:152)
at com.ouyeel.xservices.job.core.executor.jetty.XxlJobExecutorHandler.handle(XxlJobExecutorHandler.java:35)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:369)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:464)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:924)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:985)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
求前辈指点方向

XxlJobFileAppender

调度日志的执行日志查看,通过该FileAppender来做,而且没有rollling机制,成本太大,建议修改

任务异常导致磁盘占满

遇到一个莫名其妙的问题。也没报异常日志,感觉像是任务阻塞导致占用资源不释放。
image
FAIL时查看执行日志,没有任何日志信息
image

在与springboot集成过程中报这个错。

在与springboot集成过程中报这个错。
Exception in thread "Thread-19" java.lang.NoSuchMethodError: org.eclipse.jetty.server.Server.setThreadPool(Lorg/eclipse/jetty/util/thread/ThreadPool;)V
at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer$1.run(JettyServer.java:28)
at java.lang.Thread.run(Thread.java:745)

集群情况下存在重复执行的情况

我这个任务是每5分钟执行一次,有时会出现短时间在2台机器上分别调度一次。
第一台机器相关日志:
2017-03-08 17:30:05,814 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job trigger start, jobId:15940733>
2017-03-08 17:30:05,822 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job failoverTrigger response, jobId:15940733, responseModel:ResponseModel{status='SUCCESS', msg='BEAT running,
>>>[address] : 172.16.21.16:6666,
>>>[status] : SUCCESS,
>>>[msg] : i am alive.


Trigger running,
>>>[address] : 172.16.21.16:6666,
>>>[status] : SUCCESS,
>>>[msg] : null

'}>
2017-03-08 17:30:05,825 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job trigger end, jobId:15940733>
2017-03-08 17:31:50,618 - xxl-job-admin - INFO [com.xxl.job.admin.core.thread.JobMonitorHelper] - <>>>>>>>>>>> job monitor heat success, JobLogId:15940733>

第二台机器相关日志:
2017-03-08 17:30:06,017 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job trigger start, jobId:15940739>
2017-03-08 17:30:06,026 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job failoverTrigger response, jobId:15940739, responseModel:ResponseModel{status='SUCCESS', msg='BEAT running,
>>>[address] : 172.16.21.16:6666,
>>>[status] : SUCCESS,
>>>[msg] : i am alive.


Trigger running,
>>>[address] : 172.16.21.16:6666,
>>>[status] : SUCCESS,
>>>[msg] : null

'}>
2017-03-08 17:30:06,029 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job trigger end, jobId:15940739>

项目启动时

版本1.3.1
Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for XxlJobInfoMapper.XxlJobInfo at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:782) at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:754) at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:536) at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:207) at org.apache.ibatis.builder.ResultMapResolver.resolve(ResultMapResolver.java:47) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:284) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:251) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:243) at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116) ... 83 more

一些改进的建议

1、可以查看任务的子任务和父任务依赖关系的图。(这个可以参考一下airflow的图)
2、可以做一个任务跑错或者挂了 之后重试的配置。
3、任务之间的依赖触发,可以只配置最后的(叶子节点)任务执行时间,然后子任务进入排队,先把父任务执行完整,依次递归触发。 感觉这样配置触发时间会更加地灵活。
4、可以加入配置任务优先级。

任务HA策略疑问

任务“执行器地址”支持配置多个,用逗号分隔,如“127.0.0.1:9998,127.0.0.1:9999”。

如果任务配置多个执行器地址,当调度中心每次发起调度请求时,会按照地址配置的顺序依次对执行器发出心跳检测请求,第一个检测为存活状态的执行器将会被选定。

感觉这种执行器选定策略不能很好的利用资源,可以考虑采用更合理的轮询选定策略。

执行器最好有个状态列

第一试用发现执行器存在了,但没有看到任务的日志,后来到执行器管理页面发现执行器存在,但Online列没有值不知道怎么回事。最后把IP和状态分成两个列。

这样状态可以单独表述,不论是否有IP地址。

如果你需要我可以帮你改一下。

tables_xxl_job.sql 脚本无法执行

[SQL]
CREATE TABLE XXL_JOB_QRTZ_JOB_DETAILS
(
SCHED_NAME VARCHAR(120) NOT NULL,
JOB_NAME VARCHAR(200) NOT NULL,
JOB_GROUP VARCHAR(200) NOT NULL,
DESCRIPTION VARCHAR(250) NULL,
JOB_CLASS_NAME VARCHAR(250) NOT NULL,
IS_DURABLE VARCHAR(1) NOT NULL,
IS_NONCONCURRENT VARCHAR(1) NOT NULL,
IS_UPDATE_DATA VARCHAR(1) NOT NULL,
REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
);
[Err] 1071 - Specified key was too long; max key length is 1000 bytes

Exception starting filter encodingFilter java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter

信息: Starting tomcat server
四月 06, 2017 6:27:25 下午 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.29
四月 06, 2017 6:27:26 下午 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter encodingFilter
java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)

四月 06, 2017 6:27:26 下午 org.apache.catalina.core.StandardContext start
严重: Error filterStart
四月 06, 2017 6:27:26 下午 org.apache.catalina.core.StandardContext start
严重: Context [/xxl-job-admin] startup failed due to previous errors
四月 06, 2017 6:27:26 下午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc

job.executor可以提供一个不依赖容器的版本,使用JVM环境

现在的executor需要依赖容器,可以考虑打成jar,在JVM中跑,脱离对web容器的依赖:

我昨天实现了一下:

通过maven 的maven-shade-plugin插件,在JVM中直接跑

main函数:

new Thread() {
			public void run() {
				synchronized (StatisticApp.class) {
					new ClassPathXmlApplicationContext("classpath:di-statistic.springContext.xml");
				}
				try {
					while (true) {
						LOG.info(GlobalConst.LogFix.LOG_FIX_PREFIX + "di-statistic is running....");
						Thread.sleep(THREAD_SLEEP_TIME);
					}
				} catch (InterruptedException e) {
					LOG.error(GlobalConst.LogFix.LOG_FIX_PREFIX + "di-statistic throws exception:");
					LOG.error(GlobalExceptionMsg.getExceptionMessage(e));
				}
			}
		}.start();

在大数据场景下支持分片调度

在大数据场景下,支持按照分片进行调度,比如一个job任务,分片规则为{北京=1,上海=2,广州=3},在进行一个job调度的时候,执行节点1只处理北京的数据,执行节点2只处理上海的数据,执行节点3只处理广州的数据。如果执行节点1挂了,那么执行节点1的分片,将自动转移到执行节点2或者执行节点3执行,达到分片的高并发,高可靠。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.