Java 启动Spring批处理作业

Java 启动Spring批处理作业,java,spring,ejb,spring-batch,Java,Spring,Ejb,Spring Batch,我有一个问题,在这里我需要从MQ队列接收一系列消息,并将其写入一个文件,然后以该文件作为输入启动spring批处理作业。现在我正在考虑使用wired@Autowired JobLauncher JobLauncher和@Autowired job job启动作业

我有一个问题,在这里我需要从MQ队列接收一系列消息,并将其写入一个文件,然后以该文件作为输入启动spring批处理作业。现在我正在考虑使用wired
@Autowired JobLauncher JobLauncher和@Autowired job job启动作业
还有其他有效的方法吗?我不想使用石英调度器或其他任何东西,因为它增加了复杂性。spring批处理本身是否有任何接口在文件进入目录后立即启动作业?任何能更好地完成这项工作的线索都将不胜感激


谢谢。

我不太明白为什么您有一个消息队列、一个消息驱动的POJO/EJB和一个批处理作业

一种方法是让消息驱动的POJO/EJB完成这项工作。它已经是一个异步进程了。您可以将消息驱动bean集中在一起,以便有足够的工作人员来处理负载。为什么要增加复杂性

如果您不想这样做,请忘记队列,单独使用Spring批处理。我不会两者都做。

  • 我有一个问题,在这里我需要从MQ队列接收一系列消息,并将其写入一个文件,然后以该文件作为输入启动spring批处理作业
一种方法是使用一点Spring集成,您可以使用一个文件轮询器来轮询一个新文件:

<file:inbound-channel-adapter id="filePoller"
                              channel="filesAreComing" 
                              directory="file:${input.directory}"
                              filename-pattern="test*" />
将其包装到
JobLaunchRequest
(它只是
作业
作业参数
的持有者)并[以消息形式]将此请求发送到
JobLaunchingMessageHandler

<service-activator input-channel="jobLauncher">
    <beans:bean class="org.springframework.batch.integration.launch.JobLaunchingMessageHandler">
        <beans:constructor-arg ref="jobLauncher" />
    </beans:bean>
</service-activator>

这将启动这项工作

“input.file”是在运行时绑定的参数(因此#{…}):


... 测线器和其他道具

您好,很抱歉回复太晚。我想利用spring面向块/拆分/分步的特性,这是无法直接使用MDB实现的。如果我已将输入写入物理磁盘上的文件,请告诉我如何启动作业?如果我单独使用spring,我如何触发作业?谢谢你挖掘这个问题。我已经实施了你的建议(即使这个问题已经解决了。只是我懒得更新那里的答案)。不过,感谢您的努力。service activator可能希望其上有一个output channel=“nullChannel”属性来处理响应消息。我有点不明白如何使用JobLauncher适配器来完成这项工作,Spring Batch Admin已经提供了该适配器。
是否应该实现?
<service-activator input-channel="jobLauncher">
    <beans:bean class="org.springframework.batch.integration.launch.JobLaunchingMessageHandler">
        <beans:constructor-arg ref="jobLauncher" />
    </beans:bean>
</service-activator>
<bean id="reader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
    <property name="resource" value="#{jobParameters[input.file]}" />
    ... line mapper and other props
</bean>