xxl-job扩展基于dubbo调用的JobHandler

xxl-job是非常流行的分布式调度中心,通常我们直接拿来用或做二开与自己的服务集成,作为微服务架构里的统一调度组件,对定时调度类作业集中管理,将调度与业务剥离。

xxl-job的架构里,xxl-job-admin是负责调度的组件,根据时间轮算法触发任务,通过RPC方式调用xxl-job-executor执行具体的任务,可以制定不同的JobHandler实现不同的执行方式。通常为了业务解耦,xxl-job-executor会独立部署,与业务通过RPC调用方式来实现任务的业务逻辑执行。

以dubbo为RPC通信组件的微服务集群中,实现以xxl-job-executor作为consumer的JobHandler,调用provider的dubbo接口,业务人员只需要关注业务逻辑实现,像其它微服务接口一样提供定时作业的接口,即可方便的实现定时任务。dubbo提供了泛化调用的方式,可以在不引入provider方的接口定义,只需要知道接口签名、方法形参、实参就可以实现dubbo调用。以下是示例,基于dubbo2.7版本。

  1. 引入dubbo依赖

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  1. 定义DubboJobHandler

核心是genericService.$invoke

@Component
public class DubboJobHandler {

    private static final Logger logger = LoggerFactory.getLogger(DubboJobHandler.class);
    // ReferenceConfig比较重,建议缓存
    private final Map<String, ReferenceConfig<GenericService>> referenceConfigMap = new ConcurrentHashMap<>();

    @Autowired
    private ObjectProvider<ApplicationConfig> app
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值