blob: 7824c87d2744d3354df6d1be509c786263c25b28 [file] [log] [blame]
1,3c1,3
< commit b52671dd27d3fe35af62cf26befc36f216222548
< Author: Yanjie Zhou <zhouyanjie@aliyun.com>
< Date: Wed Nov 11 23:09:19 2020 +0800
---
> commit bdecb6ccb57104efcdae0ecddb5f4829055b66e4
> Author: 吴伟杰 <root496879118@me.com>
> Date: Fri Nov 13 15:57:14 2020 +0800
5,11c5
< Update documents and examples of Spring Boot Starter (#1708)
<
< * Update documents and examples of Spring Boot Starter
<
< * Update spring-boot-starter.en.md
<
< * Update spring-namespace.*.md
---
> Update contents about Cloud Scheduler in FAQ (#1719)
13,19c7,11
< diff --git a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-boot-starter.cn.md b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-boot-starter.cn.md
< index ed8e3210e..5156da93c 100644
< --- a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-boot-starter.cn.md
< +++ b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-boot-starter.cn.md
< @@ -74,26 +74,39 @@ elasticjob:
< 一次性调度的作业的执行权在开发者手中,开发者可以在需要调用作业的位置注入 `OneOffJobBootstrap`
< 通过 `execute()` 方法执行作业。
---
> diff --git a/docs/content/faq/_index.cn.md b/docs/content/faq/_index.cn.md
> index 8b1051a6e..ce9b54e3b 100644
> --- a/docs/content/faq/_index.cn.md
> +++ b/docs/content/faq/_index.cn.md
> @@ -104,4 +104,14 @@ ElasticJob 执行任务会获取本机IP,首次可能存在获取IP较慢的
21,28c13
< -**关于@DependsOn注解**
< -
< -JobBootstrap Starter 动态创建,如果依赖方的实例化时间早于 Starter 创建 JobBootstrap,将无法注入 JobBootstrap 的实例。
< -
< -也可以通过 ApplicationContext 获取 JobBootstrap Bean
< -
< `OneOffJobBootstrap` bean 的名称通过属性 jobBootstrapBeanName 配置,注入时需要指定依赖的 bean 名称。
< 具体配置请参考[配置文档](/cn/user-manual/elasticjob-lite/configuration/spring-boot-starter)。
---
> 打开cmd.exe并执行下面的命令:
30,131c15,17
< +```yaml
< +elasticjob:
< + jobs:
< + myOneOffJob:
< + jobBootstrapBeanName: myOneOffJobBean
< + ....
< +```
< +
< ```java
< @RestController
< -@DependsOn("ElasticJobLiteAutoConfiguration")
< public class OneOffJobController {
<
< - @Resource(name = "manualScriptJobOneOffJobBootstrap")
< - private OneOffJobBootstrap manualScriptJob;
< -
< + // 通过 "@Resource" 注入
< + @Resource(name = "myOneOffJobBean")
< + private OneOffJobBootstrap myOneOffJob;
< +
< @GetMapping("/execute")
< public String executeOneOffJob() {
< - manualScriptJob.execute();
< + myOneOffJob.execute();
< + return "{\"msg\":\"OK\"}";
< + }
< +
< + // 通过 "@Autowired" 注入
< + @Autowired
< + @Qualifier(name = "myOneOffJobBean")
< + private OneOffJobBootstrap myOneOffJob2;
< +
< + @GetMapping("/execute2")
< + public String executeOneOffJob2() {
< + myOneOffJob2.execute();
< return "{\"msg\":\"OK\"}";
< }
< }
< diff --git a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-boot-starter.en.md b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-boot-starter.en.md
< index 10c4399a9..47f5fcbba 100644
< --- a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-boot-starter.en.md
< +++ b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-boot-starter.en.md
< @@ -76,26 +76,39 @@ When to execute OneOffJob is up to you.
< Developers can inject the `OneOffJobBootstrap` bean into where they plan to invoke.
< Trigger the job by invoking `execute()` method manually.
<
< -**About @DependsOn Annotation**
< -
< -JobBootstraps are created by the Starter dynamically. It's unable to inject the `JobBootstrap` beans if the beans which depends on `JobBootstrap` were instantiated earlier than the instantiation of `JobBootstrap`.
< -
< -Developers can also retrieve `JobBootstrap` beans by ApplicationContext.
< -
< The bean name of `OneOffJobBootstrap` is specified by property "jobBootstrapBeanName",
< Please refer to [Spring Boot Starter Configuration](/en/user-manual/elasticjob-lite/configuration/spring-boot-starter).
<
< +```yaml
< +elasticjob:
< + jobs:
< + myOneOffJob:
< + jobBootstrapBeanName: myOneOffJobBean
< + ....
< +```
< +
< ```java
< @RestController
< -@DependsOn("ElasticJobLiteAutoConfiguration")
< public class OneOffJobController {
< -
< - @Resource(name = "manualScriptJobOneOffJobBootstrap")
< - private OneOffJobBootstrap manualScriptJob;
< +
< + // Inject via "@Resource"
< + @Resource(name = "myOneOffJobBean")
< + private OneOffJobBootstrap myOneOffJob;
<
< @GetMapping("/execute")
< public String executeOneOffJob() {
< - manualScriptJob.execute();
< + myOneOffJob.execute();
< + return "{\"msg\":\"OK\"}";
< + }
< +
< + // Inject via "@Autowired"
< + @Autowired
< + @Qualifier(name = "myOneOffJobBean")
< + private OneOffJobBootstrap myOneOffJob2;
< +
< + @GetMapping("/execute2")
< + public String executeOneOffJob2() {
< + myOneOffJob2.execute();
< return "{\"msg\":\"OK\"}";
< }
< }
< diff --git a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.cn.md b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.cn.md
< index 8b7cf9766..09c52e71a 100644
< --- a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.cn.md
< +++ b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.cn.md
< @@ -41,8 +41,29 @@ ElasticJob-Lite 提供自定义的 Spring 命名空间,可以与 Spring 容器
<
< ## 作业启动
<
< +### 定时调度
---
> -tar zxvf apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-ui-bin.tar.gz
> \ No newline at end of file
> +tar zxvf apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-ui-bin.tar.gz
133,135c19
< 将配置 Spring 命名空间的 xml 通过 Spring 启动,作业将自动加载。
<
< +### 一次性调度
---
> +## 13. 运行 Cloud Scheduler 持续输出日志 "Elastic job: IP:PORT has leadership",不能正常运行
137,138c21
< +一次性调度的作业的执行权在开发者手中,开发者可以在需要调用作业的位置注入 `OneOffJobBootstrap`
< +通过 `execute()` 方法执行作业。
---
> +回答:
140,152c23
< +```xml
< + <bean id="oneOffJob" class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.SpringSimpleJob" />
< + <elasticjob:job id="oneOffJobBean" job-ref="oneOffJob" ... />
< +```
< +```java
< +public final class SpringMain {
< + public static void main(final String[] args) {
< + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:META-INF/application-context.xml");
< + OneOffJobBootstrap oneOffJobBootstrap = context.getBean("oneOffJobBean", OneOffJobBootstrap.class);
< + oneOffJobBootstrap.execute();
< + }
< +}
< +```
---
> +Cloud Scheduler 依赖 Mesos 库,启动时需要通过 `-Djava.library.path` 指定 Mesos 库所在目录。
154,165c25
< ## 配置作业导出端口
<
< 使用 ElasticJob-Lite 过程中可能会碰到一些分布式问题,导致作业运行不稳定。
< diff --git a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.en.md b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.en.md
< index 0b6ed6ab0..9b147c3e3 100644
< --- a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.en.md
< +++ b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.en.md
< @@ -41,8 +41,30 @@ Through the way of DI (Dependency Injection), developers can easily use data sou
<
< ## Job Start
<
< +### Schedule Job
---
> +例如,Mesos 库位于 `/usr/local/lib`,启动 Cloud Scheduler 前需要设置 `-Djava.library.path=/usr/local/lib`
167c27,33
< If the Spring container start, the `XML` that configures the Spring namespace will be loaded, and the job will be automatically started.
---
> +Mesos 相关请参考 [Apache Mesos](https://mesos.apache.org/)。
> diff --git a/docs/content/faq/_index.en.md b/docs/content/faq/_index.en.md
> index 50edef214..cb2df34c9 100644
> --- a/docs/content/faq/_index.en.md
> +++ b/docs/content/faq/_index.en.md
> @@ -104,3 +104,13 @@ Some decompression tools may truncate the file name when decompressing the Shard
> Open cmd.exe and execute the following command:
169c35
< +### One-off Job
---
> tar zxvf apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-ui-bin.tar.gz
171,187c37
< +When to execute OneOffJob is up to you.
< +Developers can inject the `OneOffJobBootstrap` bean into where they plan to invoke.
< +Trigger the job by invoking `execute()` method manually.
< +
< +```xml
< + <bean id="oneOffJob" class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.SpringSimpleJob" />
< + <elasticjob:job id="oneOffJobBean" job-ref="oneOffJob" ... />
< +```
< +```java
< +public final class SpringMain {
< + public static void main(final String[] args) {
< + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:META-INF/application-context.xml");
< + OneOffJobBootstrap oneOffJobBootstrap = context.getBean("oneOffJobBean", OneOffJobBootstrap.class);
< + oneOffJobBootstrap.execute();
< + }
< +}
< +```
---
> +## 13. Unable to startup Cloud Scheduler. Continuously output "Elastic job: IP:PORT has leadership"gg
189,191c39,45
< ## Job Dump
<
< Using ElasticJob may meet some distributed problem which is not easy to observe.
---
> +Answer:
> +
> +Cloud Scheduler required Mesos native library. Specify Mesos native library path by property `-Djava.library.path`.
> +
> +For instance, Mesos native libraries are under `/usr/local/lib`, so the property `-Djava.library.path=/usr/local/lib` need to be set to start the Cloud Scheduler.
> +
> +About Apache Mesos, please refer to [Apache Mesos](https://mesos.apache.org/).