Spring XD Batch Job远程分区

时间:2016-06-24 21:36:53

标签: java spring spring-xd partition

我是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]

下面是我的spring-module.xml(我已经删除了很容易被假设的声明)

    <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 |

所有指针都非常感谢!

0 个答案:

没有答案