DotXxlJob

[(github)https://github.com/xuanye/DotXxlJob][https://github.com/xuanye/DotXxlJob] xxl-job的dotnet core 执行器实现,支持XXL-JOB 2.0+

1 XXL-JOB概述

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

2. 关于DotXxlJob产生

在工作中调研过多个任务调度平台,如Hangfire、基于Quatz.NET的第三方扩展,都与实际的需求有一点差距。之前一直使用Hangfire,Hangfire的执行器在同步调用业务服务时,如果即时业务服务正在重新部署或者重启,有一定概率会出现死锁,导致CPU100%,后来全部调整为异步,但是这样就无法获得执行结果,这样的设计有蛮大问题,XxlJob的回调机制很好的解决了这个问题。本身如果通过http的方式调用,只要部署springbootd的一个执行器就可以解决问题,但是扩展性较差。所以萌生了实现DotNet版本的执行器的想法,为避免重复造轮子,开始之前也进行过调研,以下仓库[https://github.com/yuniansheng/xxl-job-dotnet][2]给了较大的启发,但是该库只支持1.9版本的xxljob,还有一些其他小问题,所以还是自力更生。

3. 如何使用

目前只实现了BEAN的方式,即直接实现IJobHandler调用的方式,Glue源码的方式实际上实现起来也并不复杂(有需求再说把),或者各位有需求Fork 实现一下

可参考sample

安装:

dotnet add package DotXxlJob.Core

3.1 在AspNetCore中使用

  1. 声明一个AspNet的Middleware中间件,并扩展ApplicationBuilder,本质是拦截Post请求,解析Body中的流信息

扩展ApplicationBuilderExtensions,可根据实际情况绑定在特殊的Url Path上

在Startup中添加必要的引用,其中自动注册。

编写JobHandler,继承AbstractJobHandler或者直接实现接口IJobHandler,通过context.JobLogger 记录执行过程和结果,在AdminWeb上可查看的哦

3.2 配置信息

管理端地址和端口是必填信息,其他根据实际情况,选择配置,配置项说明见下代码中的注释

在其他Http服务中使用

只需要实现Http请求的拦截,并判断post请求中content-Type="application/octet-stream",并使用XxlRpcServiceHandler来处理流 即可。

其他说明

XXL-JOB内置的RPC是使用Hessian协议,这个有点坑。很多都是java特有的属性和标识,比如类名什么的。在本项目中,并没有实现完整的Hessian2协议,只实现了使用到的类型,当然扩展起来也非常方便。如果有人要单独使用Hessian 这个类库的话,要特别注意这个问题。

有任何问题,可Issue反馈 ,最后感谢 xxl-job

原文:https://www.cnblogs.com/xuanye/p/xxl-job-executor-dotnet-port.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

xxl-job dotnet core executor执行器开源相关推荐

  1. xxl-job 执行结果是空_xxljob dotnet core executor执行器开源

    DotXxlJob [(github)https://github.com/xuanye/DotXxlJob][https://github.com/xuanye/DotXxlJob] xxl-job ...

  2. dotnet core开源博客系统XBlog介绍

    XBlog是dotnet core平台下的个人博客开源系统,它只需要通过Copy的方式即可以部署到Linux和windows系统中:如果你有安全证书那只需要简单配置一下即可提供安全的Https服务.接 ...

  3. [SSCore] 开源dotnet core 版本 SuperSocket

    前言碎语 最近一直在做旧版本dotnet 程序迁移至dotnet core的工作, 非常欣慰dotnet社区的蓬勃发展, 目前大部分的第三方类库或开源代码都有了dotnet core版本 或者可以方便 ...

  4. dotnet core高吞吐Http api服务组件FastHttpApi

    简介 是dotNet core下基于Beetlex实现的一个高度精简化和高吞吐的HTTP API服务开源组件,它并没有完全实现HTTP SERVER的所有功能,而是只实现了在APP和WEB中提供数据服 ...

  5. CentOS 7 安装 Greenplum6 (附 dotNET Core 示例)

    Mysql 在面对大数据量的时候,还是表现有些吃力,所以产品中需要扩展能支持海量数据的数据库,这里选择的数据库为 Greenplum6 ,Greenplum 底层使用的是开源数据库 PostgreSQ ...

  6. dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程

    在上一篇博客是使用官方提供的 AppHost 跑起来整个 dotnet 程序.本文告诉大家在 dotnet 程序运行到托管代码之前,所需要的 Native 部分的逻辑.包括如何寻找 dotnet 运行 ...

  7. dotnet core 应用是如何跑起来的 通过AppHost理解运行过程

    在 dotnet 的输出路径里面,可以看到有一个有趣的可执行文件,这个可执行文件是如何在框架发布和独立发布的时候,找到 dotnet 程序的运行时的,这个可执行文件里面包含了哪些内容 在回答上面的问题 ...

  8. dotnet core开发体验之开始MVC

    开始 在上一篇文章:dotnet core多平台开发体验 ,体验了一把dotnet core 之后,现在想对之前做的例子进行改造,想看看加上mvc框架是一种什么样的体验,于是我就要开始诞生今天的这篇文 ...

  9. dotnet core 开发体验之Routing

    开始 回顾上一篇文章:dotnet core开发体验之开始MVC 里面体验了一把mvc,然后我们知道了aspnet mvc是靠Routing来驱动起来的,所以感觉需要研究一下Routing是什么鬼. ...

最新文章

  1. 【Excel】使用Excel函数计算二项分布泊松分布概率
  2. java 多线程 进程_Java多线程1:进程与线程概述
  3. Spring中bean的作用域
  4. Jboss 安全和优化
  5. AndroidStudio安卓原生开发_Activity_生命周期_单activity的生命周期_多activity启动关闭的时候生命周期关系---Android原生开发工作笔记85
  6. 解析Servlet/JSP会话跟踪机制
  7. Java IO实战操作(四)
  8. centos7.2 ftp连接问题
  9. Linux下C编程入门(2)
  10. 内蒙古2021年高考成绩查询系统入口,2021年内蒙古高考成绩查询网址,内蒙古高考成绩查询系统时间安排...
  11. Java 将Excel转为XML
  12. java 应用 http spdy_java-删除了ALPN回调:禁用了SPDY和HTTP / 2. alpn-boot是否在引导类路径上?...
  13. java webservice原理_轻松搞懂WebService工作原理
  14. 一个简单的抓取百度热度数据并可视化的demo
  15. 将域名解析到空间服务器,如何把域名解析到空间
  16. 苹果低头了,但不想丢掉它的皇冠 1
  17. 实战 - 学成在线项目
  18. 什么是Linux 的xxd
  19. Windows10下WebLogic的下载与安装
  20. 这家公司把聊天机器部署在安全平台

热门文章

  1. SQL server 2000安装时提示我”以前的某个程序安装已在安装计算机上创建挂起的文件操作....”...
  2. 如何添加引文标_如何在Google文档中查找和添加引文
  3. 三、Python-列表
  4. 2019第10周知识总结
  5. 如何评价国内SRC纷纷上线“白帽子协议”?
  6. js 中声明变量 “提前”
  7. #celery#周期性任务
  8. dmidecode常用的查询
  9. Spring 事物传播特性
  10. CacheManager - 用 C# 编写的 .NET 的开源缓存抽象层