当前位置: 首页 > 知识库问答 >
问题:

(Spring batch)带应答的可查询通道包含ChunkResponsessions,即使作业成功完成

林浩漫
2023-03-14
    <bean id="chunkWriter" class="org.springframework.batch.integration.chunk.ChunkMessageChannelItemWriter" scope="step">
    <property name="messagingOperations" ref="messagingGateway" />
    <property name="replyChannel" ref="masterChunkReplies" />
    <property name="throttleLimit" value="5" />
    <property name="maxWaitTimeouts" value="30000" />
</bean>

 <bean id="messagingGateway" class="org.springframework.integration.core.MessagingTemplate">
    <property name="defaultChannel" ref="masterChunkRequests" />
    <property name="receiveTimeout" value="2000" />
</bean>

<!-- Remote Chunking Replies From Slave -->
<jms:inbound-channel-adapter id="masterJMSReplies"
                             destination="remoteChunkingRepliesQueue"
                             connection-factory="remoteChunkingConnectionFactory"
                             channel="masterChunkReplies">
    <int:poller fixed-delay="10" />
</jms:inbound-channel-adapter>

<int:channel id="masterChunkReplies">
    <int:queue />
    <int:interceptors>
        <int:wire-tap channel="loggingChannel"/>
    </int:interceptors>
</int:channel>
Message contained wrong job instance id ["
                + jobInstanceId + "] should have been [" + localState.getJobId() + "]."

有一个简单的变通方法,在作业开始时清理MasterChunkReplelies队列通道,但我不确定它是否正确...

你能澄清一下吗?

共有1个答案

宰父正真
2023-03-14

加里,我找到根本原因了。

在从服务器上,如果我更改以下块使用者JMS适配器:

<jms:message-driven-channel-adapter id="slaveRequests"
                                    connection-factory="remoteChunkingConnectionFactory"
                                    destination="remoteChunkingRequestsQueue"
                                    channel="chunkRequests"
                                    concurrent-consumers="10"
                                    max-concurrent-consumers="50"
                                    acknowledge="transacted"
                                    receive-timeout="5000"
                                    idle-task-execution-limit="10"
                                    idle-consumer-limit="5"

        />

对于

<jms:inbound-channel-adapter id="jmsRequests" connection-factory="remoteChunkingConnectionFactory"
                             destination="remoteChunkingRequestsQueue"
                             channel="chunkRequests"
                             acknowledge="transacted"
                             receive-timeout="5000"
        >
    <int:poller fixed-delay="100"/>
</jms:inbound-channel-adapter>
Message contained wrong job instance id ["
            + jobInstanceId + "] should have been [" + localState.getJobId() + "]."
 类似资料:
  • 我使用Spring Batch将表从源数据库克隆到目标数据库。使用和传递参数从服务层手动启动作业。 一切都很好,但是使用当前配置(下面),在步骤描述中使用时,我只克隆了10行,并且异常引起。

  • 我正在做一个项目,我们正在使用Spring Boot、Spring Batch和Camel。 关于如何在JobExecution数据可用时立即返回它,有什么想法吗?

  • 我看到的问题和这里说的一样 http://forum.spring.io/forum/spring-projects/integration/724241-s-integration-s-batch-remote-step-execution-problem?view=thread 我有多个作业正在运行,这些作业的步骤使用下面定义的相同父分区hanldler“parent PartitionHan

  • 假设我有一个DynamoDB表,比如 每个项目都有一个名称,属于一个客户,所以我也有一个索引 假设我有以下数据: 现在,我想查询特定客户的所有项目,并过滤部分名称的结果(本质上是一个搜索操作)。例如,给我所有属于客户42且名称中包含“果汁”的项目(橙汁和苹果汁是预期结果)。 如果我查询,我将得到一个错误,说不支持。我可以理解这个限制,因为意味着必须扫描所有项目(在给定的散列键内),但是,你可以用查

  • 问题内容: 我有一个很大的函数,它可以获取很多不同的数据并将其插入到多个表中。.并非所有数据都始终可用,因此并非所有的SQL INSERT查询都成功。我需要检查哪个SQL INSERT查询完全成功,而哪个则不能对这些数据执行某些操作(例如插入到日志表或类似表中)。 只是给你一个我认为可以做到的例子: 我不完全确定这是最好的方法,如果它总是真正显示出是否已将数据插入表中…有什么建议吗? 问题答案:

  • 我有一些动画,我试图转换为约束。它背后的想法是当出现错误时登录提示会反弹。 我的方法是,视图控制器上的所有内容都在bounceView中,而bounceView本身也在主视图中。 BounceView使用居中约束和前导空间约束绑定到主视图。为了使布局在设计时明确无误,还有一个前导空间和顶部空间约束。不过,这些只是占位符,在运行时被等高/宽约束替换。 没有其他约束与主视图相关联。 现在,一些细节…