<a href="/article/family-solon-cloud-job">生态 / Solon Cloud Job [传送]</a>


### 1、情况简介

使用分布式定时任务、计划任务（目前适配有：local, water, xxl-job, quartz）

### 2、简单示例

```java
//注解模式 - Hander 风格（也可以用：Bean method 风格）
//water 支持直接注册进去，并附带cron7x,description（注册后亦可调）
@CloudJob(name="JobHandlerDemo1", cron7x = "0 30 0 * * ?", description="示例") 
public class JobHandlerDemo1 implements CloudJobHandler {
    @Override
    public void handle(Context ctx) throws Throwable {
        //任务处理
    }
}

//手动模式
CloudClient.job().register("JobHandlerDemo3","",c->{
    //任务处理 
});
```


拦截任务处理（记录消耗时间、日志等）

```java
@Component
public class JobInterceptorImpl implements CloudJobInterceptor {
    static Logger log = LoggerFactory.getLogger(BaseJobInterceptor.class);

    @Override
    public void doIntercept(Job job, CloudJobHandler handler) throws Throwable {
        TagsMDC.tag0("job");
        TagsMDC.tag1(job.getName());

        Timecount timecount = new Timecount().start();
        long timespan = 0;

        try {
            handler.handle(job.getContext());
            timespan = timecount.stop().milliseconds();

            log.info("Job execution succeeded @{}ms", timespan);
        } catch (Throwable e) {
            timespan = timecount.stop().milliseconds();

            log.error("Job execution error @{}ms: {}", timespan, e);
            throw e;
        } finally {
            if (timespan > 0) {
                CloudClient.metric().addMeter(Solon.cfg().appName(), "job", job.getName(), timespan);
            }
        }
    }
}
```


**代码演示：**

[https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud)
