使用回复目标的分区作业

迈克·罗瑟

我们有一个JEE应用程序,它在集群上使用大约40个分区作业。它可以部署在JBoss和WebSphere上。我们遇到2个问题:

  • JBoss和WebSphere中的消息传递系统故障通常与临时队列连接问题有关

  • 分区作业实际上是由于丢失消息而挂起的。

我读了发帖称切换reply-destinationoutbound-gateway可提高耐用性和允许在出现故障的情况下重新连接。inbound-gateway基本上开始于请求队列2名的听众。

<int-jms:inbound-gateway id="springbatch.inbound.gateway" 
                connection-factory="springbatch.jmsConnectionFactory" 
                request-channel="springbatch.slave.jms.request" 
                request-destination="requestsQueue" 
                reply-channel="springbatch.slave.jms.response" 
                concurrent-consumers="2" 
                max-concurrent-consumers="2"/> 

每个工作都有单独的任务outbound-channel

<int-jms:outbound-gateway 
    connection-factory="springbatch.jmsConnectionFactory" 
    request-channel="jms.channel.1" 
    request-destination="requestsQueue" 
    reply-channel="jms.channel.2" 
    reply-destination="repliesQueue"
    correlation-key="JMSCorrelationID" >
    <int-jms:reply-listener />        
</int-jms:outbound-gateway>

它可以在一台服务器上正常运行,但是当在集群上运行时,分区在集群周围运行,但是主步骤不会得到确认。我认为JMSCoordinationIDas作为关联键将处理匹配JMS消息。

我是否缺少配置文件?

加里·罗素

你所拥有的应该起作用;在该模式下,相关性id设置为gatewayId+n(其中gatewayIdaUUIDn增量)。答复容器消息选择器设置为,JMSCorrelationID LIKE gatewayId%因此应将步骤执行结果正确路由回主服务器。我建议您打开DEBUG日志记录,并按照双方的消息查看发生的情况。

编辑:

回复:共享JMS端点(下面的评论)。

可以完成,但需要进行一些重组。

在生产者(主)方面,网关和独立的聚合器将必须移至父上下文(每个作业上下文是其子级)。由于分区处理程序必须位于子上下文中,因此您需要一个单独的聚合器类。也就是说,聚合与分区正交,为方便起见,它仅位于该bean中。一个通用的聚合器很好,因为它使用分区处理程序的关联ID来执行作业,并且重新组装的步骤执行结果将被路由到正确的分区处理程序。

使用者(从属)方面比较棘手,因为如果入站网关在单个(父)上下文中,则它stepExecutionRequestHandler在子上下文中将看不到s的通道。您将需要构建一个路由器以将请求路由到适当的作业上下文。并非没有,只是更多的工作。

动态FTP Spring集成样品和其自述是一个很好的起点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Xcode项目中重复目标的脚本

来自分类Dev

更新具有重复目标的DataFrame

来自分类Dev

Xcode项目中重复目标的脚本

来自分类Dev

尝试恢复目标的JMS消息侦听器调用程序的设置失败

来自分类Dev

尝试恢复目标的JMS消息侦听器调用程序的设置失败

来自分类Dev

使用C#在Outlook中禁用回复或转发

来自分类Dev

如何使用回复ID查找付款收款?

来自分类Dev

使用C#在Outlook中禁用回复或转发

来自分类Dev

Django-href重复目标

来自分类Dev

使用JavaScript更改滑块目标的:target

来自分类Dev

使用颜色显示针对目标的进度

来自分类Dev

在特定于目标的变量中使用目标名称

来自分类Dev

“在下标的作业中不允许使用NA”

来自分类Dev

“在下标的作业中不允许使用NA”

来自分类Dev

osticket票带引用回复

来自分类Dev

为什么不是有效的重复目标?

来自分类Dev

为什么不是有效的重复目标?

来自分类Dev

为什么不是有效的重复目标?

来自分类Dev

iOS 8扩展和应用目标的使用代码

来自分类Dev

使用Python提交带有javascript目标的表单

来自分类Dev

使用std :: tie作为循环目标的范围

来自分类Dev

使用angularJS单击时更改目标的属性

来自分类Dev

如何使用高于实际构建目标的android API

来自分类Dev

使用CMake添加具有目标的文件

来自分类Dev

使用std :: tie作为循环目标的范围

来自分类Dev

使用目标的PuTTY快捷方式:如何指定端口?

来自分类Dev

如何使用后退按钮刷新目标的ViewController

来自分类Dev

使用`Deref`时,如何访问目标的相关功能?

来自分类Dev

使用 Vanilla JS 选择事件目标的最佳实践