我刚来spring batch。我想在服务器a上运行spring batch作业,并想使用spring batch admin.is从服务器b启动这些作业,这是可能的吗?我通过以下两种方式进行了搜索:
1.JMX方式:我可以将spring batch beans转换为mbeans,但我无法从spring batch admin.can中读取它们。您能告诉我如何从spring batch admin中读取mbeans并启动它们吗?
2.公共存储库:我认为如果我对spring batch和spring batch管理使用相同的数据库存储库,那么我可以从spring batch管理(从服务器b).but启动远程作业,在spring batch管理的作业xml文件中,微线程的类路径应该是什么?
你能帮我解决上面的问题吗?或者告诉我有没有新的方法?
发布于 2012-03-01 06:35:49
我们最终使用mq通信实现了一个框架来处理此问题。每个“批处理节点”注册自身和任何“批处理类”参数,如“nodeType=A”或“jobSizeiCanHandle=BIG”(这些都是虚构的,但你明白了)。客户端控制台读取此信息,并通过MQ向节点查询作业列表。然后,它通过基于基本文本的协议(属性文件格式)提交带有参数的作业请求。
command=START_JOB
job=JobABC
param1=x
param2=y
其中一个批处理节点将拾取消息并启动作业,它将以相同的方式返回成功/失败状态,并返回具有相同关联id的消息。这样客户端就可以向用户显示响应。
这允许我们做你所说的事情,并通过一个外部调度器(Control-M)触发作业。上面提到的‘nodeType’允许我们查询单个节点(这些节点监听'nodeType=A or nodeType=A=*‘。这允许命令在必要时被“定向”到特定节点。
请记住,这是我们自己的控制台,不是spring batch管理控制台。因此,这可能对您没有帮助,但是使用spring批处理API (4或5个asps)构建一个简单的控制台并不需要那么长时间。
批处理节点也可以启动简单的服务,如HTTP REST服务或“随便什么”,但我们大量使用MQ,我喜欢不必预先注册节点的想法(框架代码不知道/不关心它是否在HTTP容器中,所以它不能轻松注册端点)。使用MQ,通道是预先配置的,所有的应用程序都只是“使用它”,所以它看起来更容易。
祝好运。
发布于 2012-02-28 03:44:39
我也在尝试做同样的事情。但似乎为了直接从Spring batch admin启动作业,所有的作业资源都必须添加到spring batch web应用程序中。可以尝试使用spring MVC提交restful作业。
发布于 2012-12-17 21:20:40
@chau
使用Spring batch admin的一种方法是“发现”和“调用”远程作业,即提供您自己的org.springframework.batch.admin.service.JobService和org.springframework.batch.core.launch.JobOperator实现,它们可以从远程作业注册表/存储库查询和调用作业。
您可以在: org.trpr.platform.batch.impl.spring.admin.SimpleJobService和org.trpr.platform.batch.impl.spring.jmx.JobAdministrator中找到支持JobService和https://github.com/regunathb/Trooper/tree/master/batch-core的作业管理员的自定义实现
使用这些bean的Spring beans XML在这里:https://github.com/regunathb/Trooper/blob/master/batch-core/src/main/resources/packaged/common-batch-config.xml
https://stackoverflow.com/questions/9058899
复制相似问题