You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/07/01 07:29:02 UTC
[shardingsphere-elasticjob-lite] branch master updated: Refactor
MonitorService (#782) (#872)
This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere-elasticjob-lite.git
The following commit(s) were added to refs/heads/master by this push:
new 2ceb8a7 Refactor MonitorService (#782) (#872)
2ceb8a7 is described below
commit 2ceb8a7b6af696ddf45aa8067a5496e98ebdf412
Author: Tboy <gu...@immomo.com>
AuthorDate: Wed Jul 1 15:28:44 2020 +0800
Refactor MonitorService (#782) (#872)
---
.../elasticjob/lite/config/JobConfiguration.java | 18 +---------
.../internal/config/yaml/YamlJobConfiguration.java | 5 +--
.../lite/internal/monitor/MonitorService.java | 24 ++++++-------
.../lite/internal/schedule/SchedulerFacade.java | 5 ---
.../lite/internal/setup/SetUpFacade.java | 5 ---
.../lite/config/JobConfigurationTest.java | 4 +--
.../elasticjob/lite/fixture/LiteYamlConstants.java | 1 -
.../lite/integrate/AbstractBaseStdJobTest.java | 14 ++++----
.../monitor/MonitorServiceDisableTest.java | 4 +--
.../internal/monitor/MonitorServiceEnableTest.java | 20 ++++++++---
.../internal/schedule/SchedulerFacadeTest.java | 7 ----
.../lite/internal/setup/SetUpFacadeTest.java | 6 ----
.../elasticjob/lite/util/yaml/YamlEngineTest.java | 2 --
.../lite/lifecycle/domain/JobSettings.java | 3 --
.../internal/settings/JobSettingsAPIImpl.java | 1 -
.../lifecycle/fixture/LifecycleYamlConstants.java | 3 --
.../internal/settings/JobSettingsAPIImplTest.java | 2 --
.../common/AbstractJobBeanDefinitionParser.java | 1 -
.../common/BaseJobBeanDefinitionParserTag.java | 2 --
.../monitor/handler/MonitorNamespaceHandler.java | 24 ++++++-------
.../parser/EmbedMonitorBeanDefinitionParser.java | 41 ++++++++++++++++++++++
.../parser/MonitorBeanDefinitionParserTag.java | 24 ++++++-------
.../src/main/resources/META-INF/namespace/job.xsd | 1 -
.../main/resources/META-INF/namespace/monitor.xsd | 37 +++++++++++++++++++
.../src/main/resources/META-INF/spring.handlers | 1 +
.../src/main/resources/META-INF/spring.schemas | 1 +
.../main/resources/META-INF/applicationContext.xml | 2 +-
.../src/main/resources/conf/job.properties | 1 -
28 files changed, 140 insertions(+), 119 deletions(-)
diff --git a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/config/JobConfiguration.java b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/config/JobConfiguration.java
index cbd55d4..d709ae7 100644
--- a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/config/JobConfiguration.java
+++ b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/config/JobConfiguration.java
@@ -56,8 +56,6 @@ public final class JobConfiguration {
private final int reconcileIntervalMinutes;
- private final int monitorPort;
-
private final String jobShardingStrategyType;
private final String jobExecutorServiceHandlerType;
@@ -110,8 +108,6 @@ public final class JobConfiguration {
private int reconcileIntervalMinutes = 10;
- private int monitorPort = -1;
-
private String jobShardingStrategyType;
private String jobExecutorServiceHandlerType;
@@ -243,18 +239,6 @@ public final class JobConfiguration {
}
/**
- * Set job monitor port.
- *
- * @param monitorPort job monitor port
- *
- * @return ElasticJob configuration builder
- */
- public Builder monitorPort(final int monitorPort) {
- this.monitorPort = monitorPort;
- return this;
- }
-
- /**
* Set job sharding sharding type.
*
* <p>
@@ -366,7 +350,7 @@ public final class JobConfiguration {
Preconditions.checkArgument(!Strings.isNullOrEmpty(cron), "cron can not be empty.");
Preconditions.checkArgument(shardingTotalCount > 0, "shardingTotalCount should larger than zero.");
return new JobConfiguration(jobName, jobType, cron, shardingTotalCount, shardingItemParameters, jobParameter,
- monitorExecution, failover, misfire, maxTimeDiffSeconds, reconcileIntervalMinutes, monitorPort,
+ monitorExecution, failover, misfire, maxTimeDiffSeconds, reconcileIntervalMinutes,
jobShardingStrategyType, jobExecutorServiceHandlerType, jobErrorHandlerType, description, props, disabled, overwrite);
}
}
diff --git a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/config/yaml/YamlJobConfiguration.java b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/config/yaml/YamlJobConfiguration.java
index ae5bfad..f4e9e84 100644
--- a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/config/yaml/YamlJobConfiguration.java
+++ b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/config/yaml/YamlJobConfiguration.java
@@ -53,8 +53,6 @@ public final class YamlJobConfiguration {
private int reconcileIntervalMinutes;
- private int monitorPort;
-
private String jobShardingStrategyType;
private String jobExecutorServiceHandlerType;
@@ -78,7 +76,7 @@ public final class YamlJobConfiguration {
JobConfiguration result = JobConfiguration.newBuilder(jobName, jobType, cron, shardingTotalCount)
.shardingItemParameters(shardingItemParameters).jobParameter(jobParameter)
.monitorExecution(monitorExecution).failover(failover).misfire(misfire)
- .maxTimeDiffSeconds(maxTimeDiffSeconds).reconcileIntervalMinutes(reconcileIntervalMinutes).monitorPort(monitorPort)
+ .maxTimeDiffSeconds(maxTimeDiffSeconds).reconcileIntervalMinutes(reconcileIntervalMinutes)
.jobShardingStrategyType(jobShardingStrategyType).jobExecutorServiceHandlerType(jobExecutorServiceHandlerType).jobErrorHandlerType(jobErrorHandlerType)
.description(description).disabled(disabled).overwrite(overwrite).build();
for (Object each : props.keySet()) {
@@ -106,7 +104,6 @@ public final class YamlJobConfiguration {
result.setMisfire(jobConfiguration.isMisfire());
result.setMaxTimeDiffSeconds(jobConfiguration.getMaxTimeDiffSeconds());
result.setReconcileIntervalMinutes(jobConfiguration.getReconcileIntervalMinutes());
- result.setMonitorPort(jobConfiguration.getMonitorPort());
result.setJobShardingStrategyType(jobConfiguration.getJobShardingStrategyType());
result.setJobExecutorServiceHandlerType(jobConfiguration.getJobExecutorServiceHandlerType());
result.setJobErrorHandlerType(jobConfiguration.getJobErrorHandlerType());
diff --git a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorService.java b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorService.java
index 16d2e7f..9cac5c9 100644
--- a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorService.java
+++ b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorService.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.elasticjob.lite.internal.monitor;
import com.google.common.base.Joiner;
-import org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationService;
import org.apache.shardingsphere.elasticjob.lite.internal.util.SensitiveInfoUtils;
import org.apache.shardingsphere.elasticjob.lite.reg.base.CoordinatorRegistryCenter;
import lombok.extern.slf4j.Slf4j;
@@ -41,29 +40,25 @@ import java.util.List;
@Slf4j
public final class MonitorService {
- public static final String DUMP_COMMAND = "dump";
-
- private final String jobName;
+ public static final String DUMP_COMMAND = "dump@";
+
+ private final int port;
private final CoordinatorRegistryCenter regCenter;
- private final ConfigurationService configService;
-
private ServerSocket serverSocket;
private volatile boolean closed;
- public MonitorService(final CoordinatorRegistryCenter regCenter, final String jobName) {
- this.jobName = jobName;
+ public MonitorService(final CoordinatorRegistryCenter regCenter, final int port) {
this.regCenter = regCenter;
- configService = new ConfigurationService(regCenter, jobName);
+ this.port = port;
}
/**
* start to listen.
*/
public void listen() {
- int port = configService.load(true).getMonitorPort();
if (port < 0) {
return;
}
@@ -94,15 +89,16 @@ public final class MonitorService {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
Socket ignored = socket) {
String cmdLine = reader.readLine();
- if (null != cmdLine && DUMP_COMMAND.equalsIgnoreCase(cmdLine)) {
+ if (null != cmdLine && cmdLine.startsWith(DUMP_COMMAND) && cmdLine.split("@").length == 2) {
List<String> result = new ArrayList<>();
- dumpDirectly("/" + jobName, result);
+ String jobName = cmdLine.split("@")[1];
+ dumpDirectly("/" + jobName, jobName, result);
outputMessage(writer, Joiner.on("\n").join(SensitiveInfoUtils.filterSensitiveIps(result)) + "\n");
}
}
}
- private void dumpDirectly(final String path, final List<String> result) {
+ private void dumpDirectly(final String path, final String jobName, final List<String> result) {
for (String each : regCenter.getChildrenKeys(path)) {
String zkPath = path + "/" + each;
String zkValue = regCenter.get(zkPath);
@@ -118,7 +114,7 @@ public final class MonitorService {
} else {
result.add(Joiner.on(" | ").join(zkPath, zkValue, treeCachePath, treeCacheValue));
}
- dumpDirectly(zkPath, result);
+ dumpDirectly(zkPath, jobName, result);
}
}
diff --git a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/SchedulerFacade.java b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/SchedulerFacade.java
index c297e18..90327b4 100644
--- a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/SchedulerFacade.java
+++ b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/SchedulerFacade.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.elasticjob.lite.internal.schedule;
import org.apache.shardingsphere.elasticjob.lite.internal.election.LeaderService;
-import org.apache.shardingsphere.elasticjob.lite.internal.monitor.MonitorService;
import org.apache.shardingsphere.elasticjob.lite.internal.reconcile.ReconcileService;
import org.apache.shardingsphere.elasticjob.lite.internal.sharding.ExecutionService;
import org.apache.shardingsphere.elasticjob.lite.internal.sharding.ShardingService;
@@ -37,8 +36,6 @@ public final class SchedulerFacade {
private final ExecutionService executionService;
- private final MonitorService monitorService;
-
private final ReconcileService reconcileService;
public SchedulerFacade(final CoordinatorRegistryCenter regCenter, final String jobName) {
@@ -46,7 +43,6 @@ public final class SchedulerFacade {
leaderService = new LeaderService(regCenter, jobName);
shardingService = new ShardingService(regCenter, jobName);
executionService = new ExecutionService(regCenter, jobName);
- monitorService = new MonitorService(regCenter, jobName);
reconcileService = new ReconcileService(regCenter, jobName);
}
@@ -66,7 +62,6 @@ public final class SchedulerFacade {
if (leaderService.isLeader()) {
leaderService.removeLeader();
}
- monitorService.close();
if (reconcileService.isRunning()) {
reconcileService.stopAsync();
}
diff --git a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacade.java b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacade.java
index 401a515..b6b56d5 100644
--- a/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacade.java
+++ b/elastic-job-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacade.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationSe
import org.apache.shardingsphere.elasticjob.lite.internal.election.LeaderService;
import org.apache.shardingsphere.elasticjob.lite.internal.instance.InstanceService;
import org.apache.shardingsphere.elasticjob.lite.internal.listener.ListenerManager;
-import org.apache.shardingsphere.elasticjob.lite.internal.monitor.MonitorService;
import org.apache.shardingsphere.elasticjob.lite.internal.reconcile.ReconcileService;
import org.apache.shardingsphere.elasticjob.lite.internal.server.ServerService;
import org.apache.shardingsphere.elasticjob.lite.internal.sharding.ShardingService;
@@ -46,8 +45,6 @@ public final class SetUpFacade {
private final ShardingService shardingService;
- private final MonitorService monitorService;
-
private final ReconcileService reconcileService;
private ListenerManager listenerManager;
@@ -58,7 +55,6 @@ public final class SetUpFacade {
serverService = new ServerService(regCenter, jobName);
instanceService = new InstanceService(regCenter, jobName);
shardingService = new ShardingService(regCenter, jobName);
- monitorService = new MonitorService(regCenter, jobName);
reconcileService = new ReconcileService(regCenter, jobName);
listenerManager = new ListenerManager(regCenter, jobName, elasticJobListeners);
}
@@ -85,7 +81,6 @@ public final class SetUpFacade {
serverService.persistOnline(enabled);
instanceService.persistOnline();
shardingService.setReshardingFlag();
- monitorService.listen();
if (!reconcileService.isRunning()) {
reconcileService.startAsync();
}
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/config/JobConfigurationTest.java b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/config/JobConfigurationTest.java
index eed099f..7a1f016 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/config/JobConfigurationTest.java
+++ b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/config/JobConfigurationTest.java
@@ -33,7 +33,7 @@ public final class JobConfigurationTest {
JobConfiguration actual = JobConfiguration.newBuilder("test_job", JobType.SIMPLE, "0/1 * * * * ?", 3)
.shardingItemParameters("0=a,1=b,2=c").jobParameter("param")
.monitorExecution(false).failover(true).misfire(false)
- .maxTimeDiffSeconds(1000).reconcileIntervalMinutes(60).monitorPort(8888)
+ .maxTimeDiffSeconds(1000).reconcileIntervalMinutes(60)
.jobShardingStrategyType("AVG_ALLOCATION").jobExecutorServiceHandlerType("SINGLE_THREAD").jobErrorHandlerType("IGNORE")
.description("desc").setProperty("key", "value")
.disabled(true).overwrite(true).build();
@@ -48,7 +48,6 @@ public final class JobConfigurationTest {
assertFalse(actual.isMisfire());
assertThat(actual.getMaxTimeDiffSeconds(), is(1000));
assertThat(actual.getReconcileIntervalMinutes(), is(60));
- assertThat(actual.getMonitorPort(), is(8888));
assertThat(actual.getJobShardingStrategyType(), is("AVG_ALLOCATION"));
assertThat(actual.getJobExecutorServiceHandlerType(), is("SINGLE_THREAD"));
assertThat(actual.getJobErrorHandlerType(), is("IGNORE"));
@@ -72,7 +71,6 @@ public final class JobConfigurationTest {
assertTrue(actual.isMisfire());
assertThat(actual.getMaxTimeDiffSeconds(), is(-1));
assertThat(actual.getReconcileIntervalMinutes(), is(10));
- assertThat(actual.getMonitorPort(), is(-1));
assertNull(actual.getJobShardingStrategyType());
assertNull(actual.getJobExecutorServiceHandlerType());
assertNull(actual.getJobErrorHandlerType());
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/fixture/LiteYamlConstants.java b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/fixture/LiteYamlConstants.java
index 64a5b68..14c43b8 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/fixture/LiteYamlConstants.java
+++ b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/fixture/LiteYamlConstants.java
@@ -33,7 +33,6 @@ public final class LiteYamlConstants {
+ "misfire: false\n"
+ "maxTimeDiffSeconds: %s\n"
+ "reconcileIntervalMinutes: 15\n"
- + "monitorPort: 8888\n"
+ "description: 'desc'\n"
+ "disabled: true\n"
+ "overwrite: true";
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/AbstractBaseStdJobTest.java b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/AbstractBaseStdJobTest.java
index 063a5b8..8a61f74 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/AbstractBaseStdJobTest.java
+++ b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/AbstractBaseStdJobTest.java
@@ -35,6 +35,7 @@ import org.apache.shardingsphere.elasticjob.lite.executor.type.impl.ScriptJobExe
import org.apache.shardingsphere.elasticjob.lite.fixture.EmbedTestingServer;
import org.apache.shardingsphere.elasticjob.lite.internal.config.yaml.YamlJobConfiguration;
import org.apache.shardingsphere.elasticjob.lite.internal.election.LeaderService;
+import org.apache.shardingsphere.elasticjob.lite.internal.monitor.MonitorService;
import org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobRegistry;
import org.apache.shardingsphere.elasticjob.lite.internal.schedule.SchedulerFacade;
import org.apache.shardingsphere.elasticjob.lite.internal.server.ServerStatus;
@@ -54,11 +55,16 @@ import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
public abstract class AbstractBaseStdJobTest {
+
+ protected static final int MONITOR_PORT = 9000;
private static ZookeeperConfiguration zkConfig = new ZookeeperConfiguration(EmbedTestingServer.getConnectionString(), "zkRegTestCenter");
@Getter(value = AccessLevel.PROTECTED)
private static CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(zkConfig);
+
+ @Getter(value = AccessLevel.PROTECTED)
+ private static MonitorService monitorService = new MonitorService(regCenter, MONITOR_PORT);
@Getter(AccessLevel.PROTECTED)
private final JobConfiguration jobConfiguration;
@@ -67,8 +73,6 @@ public abstract class AbstractBaseStdJobTest {
private final boolean disabled;
- private final int monitorPort;
-
private final LeaderService leaderService;
@Getter(AccessLevel.PROTECTED)
@@ -99,13 +103,11 @@ public abstract class AbstractBaseStdJobTest {
public void doAfterJobExecutedAtLastCompleted(final ShardingContexts shardingContexts) {
}
});
- monitorPort = -1;
leaderService = new LeaderService(regCenter, jobName);
}
@SneakyThrows
- protected AbstractBaseStdJobTest(final Class<? extends ElasticJob> elasticJobClass, final int monitorPort) {
- this.monitorPort = monitorPort;
+ protected AbstractBaseStdJobTest(final Class<? extends ElasticJob> elasticJobClass) {
jobConfiguration = initJobConfig(elasticJobClass);
jobScheduler = new JobScheduler(regCenter, elasticJobClass.newInstance(), jobConfiguration);
disabled = false;
@@ -116,7 +118,7 @@ public abstract class AbstractBaseStdJobTest {
String cron = "0/1 * * * * ?";
int totalShardingCount = 3;
String shardingParameters = "0=A,1=B,2=C";
- Builder builder = JobConfiguration.newBuilder(jobName, getJobType(elasticJobClass), cron, totalShardingCount).shardingItemParameters(shardingParameters).monitorPort(monitorPort)
+ Builder builder = JobConfiguration.newBuilder(jobName, getJobType(elasticJobClass), cron, totalShardingCount).shardingItemParameters(shardingParameters)
.jobErrorHandlerType("IGNORE").disabled(disabled).overwrite(true);
if (DataflowJob.class.isAssignableFrom(elasticJobClass)) {
builder.setProperty(DataflowJobExecutor.STREAM_PROCESS_KEY, Boolean.TRUE.toString());
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java
index e30b504..806920b 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java
+++ b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java
@@ -26,11 +26,11 @@ import java.io.IOException;
public final class MonitorServiceDisableTest extends AbstractBaseStdJobTest {
public MonitorServiceDisableTest() {
- super(TestSimpleJob.class, -1);
+ super(TestSimpleJob.class);
}
@Test(expected = IOException.class)
public void assertMonitorWithDumpCommand() throws IOException {
- SocketUtils.sendCommand(MonitorService.DUMP_COMMAND, 9000);
+ SocketUtils.sendCommand(MonitorService.DUMP_COMMAND, 9000 - 1);
}
}
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceEnableTest.java b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceEnableTest.java
index 06cdbea..a284679 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceEnableTest.java
+++ b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceEnableTest.java
@@ -19,6 +19,8 @@ package org.apache.shardingsphere.elasticjob.lite.internal.monitor;
import org.apache.shardingsphere.elasticjob.lite.fixture.TestSimpleJob;
import org.apache.shardingsphere.elasticjob.lite.integrate.AbstractBaseStdJobTest;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
@@ -28,16 +30,26 @@ import static org.junit.Assert.assertNull;
public final class MonitorServiceEnableTest extends AbstractBaseStdJobTest {
- private static final int MONITOR_PORT = 9000;
-
public MonitorServiceEnableTest() {
- super(TestSimpleJob.class, MONITOR_PORT);
+ super(TestSimpleJob.class);
+ }
+
+ @Before
+ public void setUp() {
+ super.setUp();
+ getMonitorService().listen();
+ }
+
+ @After
+ public void tearDown() {
+ super.tearDown();
+ getMonitorService().close();
}
@Test
public void assertMonitorWithCommand() throws IOException {
initJob();
- assertNotNull(SocketUtils.sendCommand(MonitorService.DUMP_COMMAND, MONITOR_PORT));
+ assertNotNull(SocketUtils.sendCommand(MonitorService.DUMP_COMMAND + getJobName(), MONITOR_PORT));
assertNull(SocketUtils.sendCommand("unknown_command", MONITOR_PORT));
}
}
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/SchedulerFacadeTest.java b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/SchedulerFacadeTest.java
index 6e13bcd..cdfe3ff 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/SchedulerFacadeTest.java
+++ b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/SchedulerFacadeTest.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.elasticjob.lite.internal.schedule;
import org.apache.shardingsphere.elasticjob.lite.handler.sharding.JobInstance;
import org.apache.shardingsphere.elasticjob.lite.internal.election.LeaderService;
-import org.apache.shardingsphere.elasticjob.lite.internal.monitor.MonitorService;
import org.apache.shardingsphere.elasticjob.lite.internal.reconcile.ReconcileService;
import org.apache.shardingsphere.elasticjob.lite.internal.sharding.ShardingService;
import org.apache.shardingsphere.elasticjob.lite.reg.base.CoordinatorRegistryCenter;
@@ -50,9 +49,6 @@ public final class SchedulerFacadeTest {
private ShardingService shardingService;
@Mock
- private MonitorService monitorService;
-
- @Mock
private ReconcileService reconcileService;
private SchedulerFacade schedulerFacade;
@@ -63,7 +59,6 @@ public final class SchedulerFacadeTest {
schedulerFacade = new SchedulerFacade(null, "test_job");
ReflectionUtils.setFieldValue(schedulerFacade, "leaderService", leaderService);
ReflectionUtils.setFieldValue(schedulerFacade, "shardingService", shardingService);
- ReflectionUtils.setFieldValue(schedulerFacade, "monitorService", monitorService);
ReflectionUtils.setFieldValue(schedulerFacade, "reconcileService", reconcileService);
}
@@ -73,7 +68,6 @@ public final class SchedulerFacadeTest {
JobRegistry.getInstance().registerJob("test_job", jobScheduleController);
schedulerFacade.shutdownInstance();
verify(leaderService, times(0)).removeLeader();
- verify(monitorService).close();
verify(reconcileService, times(0)).stopAsync();
verify(jobScheduleController).shutdown();
}
@@ -86,7 +80,6 @@ public final class SchedulerFacadeTest {
JobRegistry.getInstance().registerJob("test_job", jobScheduleController);
schedulerFacade.shutdownInstance();
verify(leaderService).removeLeader();
- verify(monitorService).close();
verify(reconcileService).stopAsync();
verify(jobScheduleController).shutdown();
}
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacadeTest.java b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacadeTest.java
index 56cdba6..c45d1b7 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacadeTest.java
+++ b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacadeTest.java
@@ -26,7 +26,6 @@ import org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationSe
import org.apache.shardingsphere.elasticjob.lite.internal.election.LeaderService;
import org.apache.shardingsphere.elasticjob.lite.internal.instance.InstanceService;
import org.apache.shardingsphere.elasticjob.lite.internal.listener.ListenerManager;
-import org.apache.shardingsphere.elasticjob.lite.internal.monitor.MonitorService;
import org.apache.shardingsphere.elasticjob.lite.internal.reconcile.ReconcileService;
import org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobRegistry;
import org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobScheduleController;
@@ -72,9 +71,6 @@ public final class SetUpFacadeTest {
private ShardingService shardingService;
@Mock
- private MonitorService monitorService;
-
- @Mock
private ReconcileService reconcileService;
@Mock
@@ -91,7 +87,6 @@ public final class SetUpFacadeTest {
ReflectionUtils.setFieldValue(setUpFacade, "serverService", serverService);
ReflectionUtils.setFieldValue(setUpFacade, "instanceService", instanceService);
ReflectionUtils.setFieldValue(setUpFacade, "shardingService", shardingService);
- ReflectionUtils.setFieldValue(setUpFacade, "monitorService", monitorService);
ReflectionUtils.setFieldValue(setUpFacade, "reconcileService", reconcileService);
ReflectionUtils.setFieldValue(setUpFacade, "listenerManager", listenerManager);
}
@@ -112,6 +107,5 @@ public final class SetUpFacadeTest {
verify(leaderService).electLeader();
verify(serverService).persistOnline(true);
verify(shardingService).setReshardingFlag();
- verify(monitorService).listen();
}
}
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/util/yaml/YamlEngineTest.java b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/util/yaml/YamlEngineTest.java
index a52e30e..5e565fa 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/util/yaml/YamlEngineTest.java
+++ b/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/util/yaml/YamlEngineTest.java
@@ -42,7 +42,6 @@ public final class YamlEngineTest {
+ "maxTimeDiffSeconds: 0\n"
+ "misfire: false\n"
+ "monitorExecution: false\n"
- + "monitorPort: 0\n"
+ "overwrite: false\n"
+ "props:\n"
+ " key: value\n"
@@ -58,7 +57,6 @@ public final class YamlEngineTest {
+ "maxTimeDiffSeconds: 0\n"
+ "misfire: false\n"
+ "monitorExecution: false\n"
- + "monitorPort: 0\n"
+ "overwrite: false\n"
+ "reconcileIntervalMinutes: 0\n"
+ "shardingTotalCount: 3\n";
diff --git a/elastic-job-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/domain/JobSettings.java b/elastic-job-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/domain/JobSettings.java
index 00112c6..f53cf6d 100644
--- a/elastic-job-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/domain/JobSettings.java
+++ b/elastic-job-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/domain/JobSettings.java
@@ -57,8 +57,6 @@ public final class JobSettings implements Serializable {
private int reconcileIntervalMinutes;
- private int monitorPort = -1;
-
private String jobShardingStrategyType;
private String jobExecutorServiceHandlerType;
@@ -89,7 +87,6 @@ public final class JobSettings implements Serializable {
result.setMisfire(misfire);
result.setMaxTimeDiffSeconds(maxTimeDiffSeconds);
result.setReconcileIntervalMinutes(reconcileIntervalMinutes);
- result.setMonitorPort(monitorPort);
result.setJobShardingStrategyType(jobShardingStrategyType);
result.setJobExecutorServiceHandlerType(jobExecutorServiceHandlerType);
result.setJobErrorHandlerType(jobErrorHandlerType);
diff --git a/elastic-job-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/settings/JobSettingsAPIImpl.java b/elastic-job-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/settings/JobSettingsAPIImpl.java
index 3971459..23d41a7 100644
--- a/elastic-job-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/settings/JobSettingsAPIImpl.java
+++ b/elastic-job-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/settings/JobSettingsAPIImpl.java
@@ -64,7 +64,6 @@ public final class JobSettingsAPIImpl implements JobSettingsAPI {
jobSettings.setJobParameter(jobConfig.getJobParameter());
jobSettings.setMonitorExecution(jobConfig.isMonitorExecution());
jobSettings.setMaxTimeDiffSeconds(jobConfig.getMaxTimeDiffSeconds());
- jobSettings.setMonitorPort(jobConfig.getMonitorPort());
jobSettings.setFailover(jobConfig.isFailover());
jobSettings.setMisfire(jobConfig.isMisfire());
jobSettings.setJobShardingStrategyType(jobConfig.getJobShardingStrategyType());
diff --git a/elastic-job-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/LifecycleYamlConstants.java b/elastic-job-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/LifecycleYamlConstants.java
index b60c5d9..bb020a5 100644
--- a/elastic-job-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/LifecycleYamlConstants.java
+++ b/elastic-job-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/LifecycleYamlConstants.java
@@ -32,7 +32,6 @@ public final class LifecycleYamlConstants {
+ "failover: true\n"
+ "misfire: false\n"
+ "maxTimeDiffSeconds: 100\n"
- + "monitorPort: 8888\n"
+ "jobShardingStrategyType: AVG_ALLOCATION\n"
+ "description: %s\n"
+ "disabled: false\n"
@@ -48,7 +47,6 @@ public final class LifecycleYamlConstants {
+ "maxTimeDiffSeconds: -1\n"
+ "misfire: true\n"
+ "monitorExecution: true\n"
- + "monitorPort: 8888\n"
+ "overwrite: false\n"
+ "props:\n"
+ " streaming.process: 'true'\n"
@@ -65,7 +63,6 @@ public final class LifecycleYamlConstants {
+ "misfire: true\n"
+ "maxTimeDiffSeconds: -1\n"
+ "reconcileIntervalMinutes: 10\n"
- + "monitorPort: 8888\n"
+ "description: ''\n"
+ "props:\n"
+ " script.command.line: test.sh\n"
diff --git a/elastic-job-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/settings/JobSettingsAPIImplTest.java b/elastic-job-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/settings/JobSettingsAPIImplTest.java
index ee5a55a..89e2a5b 100644
--- a/elastic-job-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/settings/JobSettingsAPIImplTest.java
+++ b/elastic-job-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/settings/JobSettingsAPIImplTest.java
@@ -74,7 +74,6 @@ public final class JobSettingsAPIImplTest {
assertThat(jobSettings.getJobParameter(), is("param"));
assertThat(jobSettings.isMonitorExecution(), is(true));
assertThat(jobSettings.getMaxTimeDiffSeconds(), is(-1));
- assertThat(jobSettings.getMonitorPort(), is(8888));
assertFalse(jobSettings.isFailover());
assertTrue(jobSettings.isMisfire());
assertNull(jobSettings.getJobShardingStrategyType());
@@ -101,7 +100,6 @@ public final class JobSettingsAPIImplTest {
jobSettings.setMisfire(true);
jobSettings.setMaxTimeDiffSeconds(-1);
jobSettings.setReconcileIntervalMinutes(10);
- jobSettings.setMonitorPort(8888);
jobSettings.setDescription("");
jobSettings.setStreamingProcess(true);
jobSettingsAPI.updateJobSettings(jobSettings);
diff --git a/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/AbstractJobBeanDefinitionParser.java b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/AbstractJobBeanDefinitionParser.java
index d6f3c47..0f29d17 100644
--- a/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/AbstractJobBeanDefinitionParser.java
+++ b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/AbstractJobBeanDefinitionParser.java
@@ -73,7 +73,6 @@ public abstract class AbstractJobBeanDefinitionParser extends AbstractBeanDefini
result.addConstructorArgValue(element.getAttribute(BaseJobBeanDefinitionParserTag.MISFIRE_ATTRIBUTE));
result.addConstructorArgValue(element.getAttribute(BaseJobBeanDefinitionParserTag.MAX_TIME_DIFF_SECONDS_ATTRIBUTE));
result.addConstructorArgValue(element.getAttribute(BaseJobBeanDefinitionParserTag.RECONCILE_INTERVAL_MINUTES));
- result.addConstructorArgValue(element.getAttribute(BaseJobBeanDefinitionParserTag.MONITOR_PORT_ATTRIBUTE));
result.addConstructorArgValue(element.getAttribute(BaseJobBeanDefinitionParserTag.JOB_SHARDING_STRATEGY_TYPE_ATTRIBUTE));
result.addConstructorArgValue(element.getAttribute(BaseJobBeanDefinitionParserTag.JOB_EXECUTOR_SERVICE_HANDLER_ATTRIBUTE));
result.addConstructorArgValue(element.getAttribute(BaseJobBeanDefinitionParserTag.JOB_ERROR_HANDLER_ATTRIBUTE));
diff --git a/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/BaseJobBeanDefinitionParserTag.java b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/BaseJobBeanDefinitionParserTag.java
index da6d507..cf9bf9c 100644
--- a/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/BaseJobBeanDefinitionParserTag.java
+++ b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/BaseJobBeanDefinitionParserTag.java
@@ -42,8 +42,6 @@ public final class BaseJobBeanDefinitionParserTag {
public static final String MONITOR_EXECUTION_ATTRIBUTE = "monitor-execution";
- public static final String MONITOR_PORT_ATTRIBUTE = "monitor-port";
-
public static final String FAILOVER_ATTRIBUTE = "failover";
public static final String MAX_TIME_DIFF_SECONDS_ATTRIBUTE = "max-time-diff-seconds";
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/monitor/handler/MonitorNamespaceHandler.java
similarity index 56%
copy from elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java
copy to elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/monitor/handler/MonitorNamespaceHandler.java
index e30b504..6c75e0f 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java
+++ b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/monitor/handler/MonitorNamespaceHandler.java
@@ -15,22 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.elasticjob.lite.internal.monitor;
+package org.apache.shardingsphere.elasticjob.lite.spring.monitor.handler;
-import org.apache.shardingsphere.elasticjob.lite.fixture.TestSimpleJob;
-import org.apache.shardingsphere.elasticjob.lite.integrate.AbstractBaseStdJobTest;
-import org.junit.Test;
+import org.apache.shardingsphere.elasticjob.lite.spring.monitor.parser.EmbedMonitorBeanDefinitionParser;
+import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
-import java.io.IOException;
-
-public final class MonitorServiceDisableTest extends AbstractBaseStdJobTest {
-
- public MonitorServiceDisableTest() {
- super(TestSimpleJob.class, -1);
- }
+/**
+ * Monitor spring namespace handler.
+ */
+public final class MonitorNamespaceHandler extends NamespaceHandlerSupport {
- @Test(expected = IOException.class)
- public void assertMonitorWithDumpCommand() throws IOException {
- SocketUtils.sendCommand(MonitorService.DUMP_COMMAND, 9000);
+ @Override
+ public void init() {
+ registerBeanDefinitionParser("embed", new EmbedMonitorBeanDefinitionParser());
}
}
diff --git a/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/monitor/parser/EmbedMonitorBeanDefinitionParser.java b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/monitor/parser/EmbedMonitorBeanDefinitionParser.java
new file mode 100644
index 0000000..9740e89
--- /dev/null
+++ b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/monitor/parser/EmbedMonitorBeanDefinitionParser.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.elasticjob.lite.spring.monitor.parser;
+
+import org.apache.shardingsphere.elasticjob.lite.internal.monitor.MonitorService;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Element;
+
+/**
+ * Bean definition parser for embed monitor.
+ */
+public class EmbedMonitorBeanDefinitionParser extends AbstractBeanDefinitionParser {
+
+ @Override
+ protected AbstractBeanDefinition parseInternal(final Element element, final ParserContext parserContext) {
+ BeanDefinitionBuilder result = BeanDefinitionBuilder.rootBeanDefinition(MonitorService.class);
+ result.addConstructorArgReference(element.getAttribute(MonitorBeanDefinitionParserTag.REGISTRY_CENTER_REF_ATTRIBUTE));
+ result.addConstructorArgValue(element.getAttribute(MonitorBeanDefinitionParserTag.MONITOR_PORT_ATTRIBUTE));
+ result.setInitMethodName("listen");
+ result.setDestroyMethodName("close");
+ return result.getBeanDefinition();
+ }
+}
diff --git a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/monitor/parser/MonitorBeanDefinitionParserTag.java
similarity index 56%
copy from elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java
copy to elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/monitor/parser/MonitorBeanDefinitionParserTag.java
index e30b504..785c9ab 100644
--- a/elastic-job-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/monitor/MonitorServiceDisableTest.java
+++ b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/monitor/parser/MonitorBeanDefinitionParserTag.java
@@ -15,22 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.elasticjob.lite.internal.monitor;
+package org.apache.shardingsphere.elasticjob.lite.spring.monitor.parser;
-import org.apache.shardingsphere.elasticjob.lite.fixture.TestSimpleJob;
-import org.apache.shardingsphere.elasticjob.lite.integrate.AbstractBaseStdJobTest;
-import org.junit.Test;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
-import java.io.IOException;
-
-public final class MonitorServiceDisableTest extends AbstractBaseStdJobTest {
+/**
+ * Monitor bean definition parser tag.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class MonitorBeanDefinitionParserTag {
- public MonitorServiceDisableTest() {
- super(TestSimpleJob.class, -1);
- }
+ public static final String REGISTRY_CENTER_REF_ATTRIBUTE = "registry-center-ref";
- @Test(expected = IOException.class)
- public void assertMonitorWithDumpCommand() throws IOException {
- SocketUtils.sendCommand(MonitorService.DUMP_COMMAND, 9000);
- }
+ public static final String MONITOR_PORT_ATTRIBUTE = "monitor-port";
}
diff --git a/elastic-job-lite-spring/src/main/resources/META-INF/namespace/job.xsd b/elastic-job-lite-spring/src/main/resources/META-INF/namespace/job.xsd
index d787ce3..7395e80 100644
--- a/elastic-job-lite-spring/src/main/resources/META-INF/namespace/job.xsd
+++ b/elastic-job-lite-spring/src/main/resources/META-INF/namespace/job.xsd
@@ -50,7 +50,6 @@
<xsd:attribute name="sharding-item-parameters" type="xsd:string" />
<xsd:attribute name="job-parameter" type="xsd:string" />
<xsd:attribute name="monitor-execution" type="xsd:string" default="true"/>
- <xsd:attribute name="monitor-port" type="xsd:string" default="-1"/>
<xsd:attribute name="max-time-diff-seconds" type="xsd:string" default="-1"/>
<xsd:attribute name="failover" type="xsd:string" default="false"/>
<xsd:attribute name="reconcile-interval-minutes" type="xsd:string" default="10"/>
diff --git a/elastic-job-lite-spring/src/main/resources/META-INF/namespace/monitor.xsd b/elastic-job-lite-spring/src/main/resources/META-INF/namespace/monitor.xsd
new file mode 100644
index 0000000..e89f13c
--- /dev/null
+++ b/elastic-job-lite-spring/src/main/resources/META-INF/namespace/monitor.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<xsd:schema xmlns="http://elasticjob.shardingsphere.apache.org/schema/monitor"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:beans="http://www.springframework.org/schema/beans"
+ targetNamespace="http://elasticjob.shardingsphere.apache.org/schema/monitor"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xsd:import namespace="http://www.springframework.org/schema/beans"/>
+
+ <xsd:element name="embed">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="beans:identifiedType">
+ <xsd:attribute name="registry-center-ref" type="xsd:string" use="required" />
+ <xsd:attribute name="monitor-port" type="xsd:string" default="-1"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/elastic-job-lite-spring/src/main/resources/META-INF/spring.handlers b/elastic-job-lite-spring/src/main/resources/META-INF/spring.handlers
index b49817a..eaf6a89 100644
--- a/elastic-job-lite-spring/src/main/resources/META-INF/spring.handlers
+++ b/elastic-job-lite-spring/src/main/resources/META-INF/spring.handlers
@@ -17,3 +17,4 @@
http\://elasticjob.shardingsphere.apache.org/schema/reg=org.apache.shardingsphere.elasticjob.lite.spring.reg.handler.RegNamespaceHandler
http\://elasticjob.shardingsphere.apache.org/schema/job=org.apache.shardingsphere.elasticjob.lite.spring.job.handler.JobNamespaceHandler
+http\://elasticjob.shardingsphere.apache.org/schema/monitor=org.apache.shardingsphere.elasticjob.lite.spring.monitor.handler.MonitorNamespaceHandler
diff --git a/elastic-job-lite-spring/src/main/resources/META-INF/spring.schemas b/elastic-job-lite-spring/src/main/resources/META-INF/spring.schemas
index 322a036..988fb6b 100644
--- a/elastic-job-lite-spring/src/main/resources/META-INF/spring.schemas
+++ b/elastic-job-lite-spring/src/main/resources/META-INF/spring.schemas
@@ -17,3 +17,4 @@
http\://elasticjob.shardingsphere.apache.org/schema/reg/reg.xsd=META-INF/namespace/reg.xsd
http\://elasticjob.shardingsphere.apache.org/schema/job/job.xsd=META-INF/namespace/job.xsd
+http\://elasticjob.shardingsphere.apache.org/schema/monitor/monitor.xsd=META-INF/namespace/monitor.xsd
diff --git a/examples/elastic-job-example-lite-spring/src/main/resources/META-INF/applicationContext.xml b/examples/elastic-job-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
index f47d915..e3fc5d2 100644
--- a/examples/elastic-job-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
+++ b/examples/elastic-job-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
@@ -28,7 +28,7 @@
<bean id="simpleJob" class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.SpringSimpleJob" />
<bean id="dataflowJob" class="org.apache.shardingsphere.elasticjob.lite.example.job.dataflow.SpringDataflowJob" />
- <job:simple id="${simple.id}" job-ref="simpleJob" registry-center-ref="regCenter" sharding-total-count="${simple.shardingTotalCount}" cron="${simple.cron}" sharding-item-parameters="${simple.shardingItemParameters}" monitor-execution="${simple.monitorExecution}" monitor-port="${simple.monitorPort}" failover="${simple.failover}" description="${simple.description}" disabled="${simple.disabled}" overwrite="${simple.overwrite}" event-trace-rdb-data-source="elasticJobLog" />
+ <job:simple id="${simple.id}" job-ref="simpleJob" registry-center-ref="regCenter" sharding-total-count="${simple.shardingTotalCount}" cron="${simple.cron}" sharding-item-parameters="${simple.shardingItemParameters}" monitor-execution="${simple.monitorExecution}" failover="${simple.failover}" description="${simple.description}" disabled="${simple.disabled}" overwrite="${simple.overwrite}" event-trace-rdb-data-source="elasticJobLog" />
<job:dataflow id="${dataflow.id}" job-ref="dataflowJob" registry-center-ref="regCenter" sharding-total-count="${dataflow.shardingTotalCount}" cron="${dataflow.cron}" sharding-item-parameters="${dataflow.shardingItemParameters}" monitor-execution="${dataflow.monitorExecution}" failover="${dataflow.failover}" max-time-diff-seconds="${dataflow.maxTimeDiffSeconds}" streaming-process="${dataflow.streamingProcess}" description="${dataflow.description}" disabled="${dataflow.disabled}" overw [...]
<!-- use absolute path to run script job -->
diff --git a/examples/elastic-job-example-lite-spring/src/main/resources/conf/job.properties b/examples/elastic-job-example-lite-spring/src/main/resources/conf/job.properties
index f186836..5ff86c7 100644
--- a/examples/elastic-job-example-lite-spring/src/main/resources/conf/job.properties
+++ b/examples/elastic-job-example-lite-spring/src/main/resources/conf/job.properties
@@ -17,7 +17,6 @@ simple.failover=true
simple.description=\u53EA\u8FD0\u884C\u4E00\u6B21\u7684\u4F5C\u4E1A\u793A\u4F8B
simple.disabled=false
simple.overwrite=true
-simple.monitorPort=9888
dataflow.id=springDataflowJob
dataflow.cron=0/5 * * * * ?