我是Spring XD的新手,请原谅我的无知。
我有一个春季批处理作业,可以单独运行。我需要将它移植到Spring XD,但需要进行远程分区 我有3个XD容器(和1个管理员)。我有一台redis服务器和一台ZK。所有3个容器都在不同的虚拟机上运行。我能够将自定义模块部署到所有容器并创建一个作业。
问题是当我尝试启动这项工作时。
我遇到了这个例外:
2016-06-24T17:12:31-0400 1.3.1.RELEASE ERROR inbound.job:XD_SF_Fetch_Job.0-redis:queue-inbound-channel-adapter1 redis.RedisMessageBus $ 1 - 无法传递消息;重试疲惫;消息发送到队列'错误:作业:XD_SF_Fetch_Job.0'org.springframework.messaging.MessageHandlingException:嵌套异常是org.springframework.batch.core.step.NoSuchStepException:无法为此请求找到StepExecution:StepExecutionRequest:[jobExecutionId = 2,stepExecutionId = 31,stepName = step1]
<import resource="classpath:/META-INF/spring-xd/batch/singlestep-partition-support.xml"/>
<!-- connect to database -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property .... />
</bean>
<bean id="myBean" scope="step" class="org.me.MyBean" > </bean>
<bean id="taskExecutor" class="org.springframework.core.task.SimpleAsyncTaskExecutor">
<property name="concurrencyLimit" value="10" />
</bean>
<bean id="partitioner" scope="step" class="com.me.Partitioner" >
<property name="id" value="#{jobParameters['id']}" />
</bean>
<batch:step id="step1">
<batch:tasklet ref="myBean"/>
以下是xd-shell提示符下的命令列表:
module upload --type job --force --name XD_MyModule --file module.jar
job create --name XD_MyJob --definition "XD_MyModule --makeUnique=true"
job deploy XD_MyJob --properties "module.XD_MyModule.count=3"
job launch XD_MyJob --params {"src":"/tmp/src1"}
我已经设置好将自定义模块上传到可供所有3个容器使用的已安装位置。
我的假设是,当我启动作业时,一个容器将获取启动请求,并使用分区程序将工作拆分为分区。我实际上可以看到分区器中的日志,它告诉我它已经走得那么远了。但看起来partitionHandler无法将步骤执行请求分发/传递给其他容器。我安装了spring xd下载附带的redis和zk。
工作回购: 所有通常的表格:
| BATCH_JOB_EXECUTION |
| BATCH_JOB_EXECUTION_CONTEXT |
| BATCH_JOB_EXECUTION_PARAMS |
| BATCH_JOB_EXECUTION_SEQ |
| BATCH_JOB_INSTANCE |
| BATCH_JOB_SEQ |
| BATCH_STEP_EXECUTION |
| BATCH_STEP_EXECUTION_CONTEXT |
| BATCH_STEP_EXECUTION_SEQ |
| XD_JOB_REGISTRY |
| XD_JOB_REGISTRY_STEP_NAMES |
这是我觉得非常奇怪的一个(只有1个记录)
MySQL的&GT;从XD_JOB_REGISTRY_STEP_NAMES中选择*;
+ ----------------- + -------------- +
| JOB_NAME | STEP_NAME |
+ ----------------- + -------------- +
| XD_MyJob | step1-master |
+ ----------------- + -------------- +
step1-master在导入的singlestep-partition-support.xml
中定义| STEP_EXECUTION_ID |版本| STEP_NAME | JOB_EXECUTION_ID | START_TIME | END_TIME |状态| COMMIT_COUNT | READ_COUNT | FILTER_COUNT | WRITE_COUNT | READ_SKIP_COUNT | WRITE_SKIP_COUNT | PROCESS_SKIP_COUNT | ROLLBACK_COUNT | EXIT_CODE | EXIT_MESSAGE | LAST_UPDATED |
| 1 | 1 | step1-master | 1 | 2016-07-03 10:10:25 | NULL |开始了| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |执行| | 2016-07-03 10:10:25 |
| 2 | 0 | step1-master:patition-Tm-AccountContactRole | 1 | 2016-07-03 10:10:25 | NULL |开始| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |执行| | 2016-07-03 10:10:25 |
| 3 | 0 | step1-master:patition-Tm-Account | 1 | 2016-07-03 10:10:25 | NULL |开始| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |执行| | 2016-07-03 10:10:25 |
所有指针都非常感谢!