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

Spring data-db to jms-如何设置已处理的标志?

冯野
2023-03-14

新到Spring批次...

我已经设置了一个Spring批处理项目,该项目使用自定义ItemReader从数据库中读取项,使用ItemProcessor将它们转换为XML,并将它们放在ItemWriter中的JMS队列中。

<batch:job id="sendItemsToJMS" job-repository="myJobRepository">
    <batch:step id="sendItemsToJMSStep">
        <batch:tasklet>
            <batch:chunk reader="itemReader" 
                         processor="itemProcessor" 
                         writer="itemWriter" commit-interval="10">
            </batch:chunk>
        </batch:tasklet>
    </batch:step>
</batch:job>

在块的同一事务中需要做的是将数据库中的原始项标记为已发送。

这个逻辑会去哪里?我是否需要在同一步骤中设置一个额外的Tasklet,就像在留档中建议的那样(5.2.1。TaskletAdapter)

如果是:-它是在同一个事务中执行的吗?-如何获取tasklet中已处理ID的列表?

干杯

共有1个答案

羊煜
2023-03-14
void ItemWriteListener.afterWrite(List<? extends S> items)

在项目作者之后打电话。write(java.util.List)在提交任何事务之前和ChunkListener之前调用。afterChunk(ChunkContext)

实现此功能并在内部执行标志更新。

 类似资料:
  • 日志-消息历史记录路由ID处理器ID处理器运行(ms)[sdPoll][sdPoll][Timer://sdPoll?FixedRate=true&period=60000][21176][null][onCompletion1][onCompletion][106][sdPoll][process7][Ref:RefProcessor][21067][null][process3][Ref:Ge

  • 问题内容: 现在看起来像这样 有没有办法一次将缓存标头设置给所有处理程序? 问题答案: 包裹多路复用器 而不是单个处理程序。 请注意,使用的处理程序时的处理程序参数是。另外,将和处理程序添加到。

  • 我试图symfony配置,以确定如何连接一些标记的服务,但我遇到了问题。我试图把这个问题浓缩成尽可能少的代码来帮助解释,但是仍然——抱歉太长了! 这里是配置部分的东西。。。 我也有一个任意的服务,它需要$emailSender和$emailTitle。在services.yaml中,它被标记为任意服务标签: Symfony文档告诉我在CompilerPass中查找标记的服务-足够公平: 在我的完整

  • 下面是我的代码片段: 现在java用'unhandled exception type SQLException)标记指示语句(以及后面的所有语句)。gfsql.dosql抛出此异常并定义为: public ResultSet doSQL(String sqlCommand)抛出SQLException{ 有趣的是--如果我像这样重复“catch”块: 未标记“未处理”错误。(但是,重复的catc

  • 问题内容: 使用以下示例代码: 我们想用上面的代码在column_names中设置带有列名的标头,但是它不起作用。尽管正在创建表,但标题不可见。 问题答案: 为了能够看到标题,您应该将表放在JScrollPane中。 或者,如果您确实不希望使用滚动窗格,则可以将tableHeader专门添加到面板中(但是:通常,您不希望这种行为):

  • 问题背景 之前做springboot项目在操作数据库方面一直在使用的是Mybatis,最近在查阅资料的时候接触到了SpringData JPA与SpringData JDBC,想问一下大佬们,这三个框架如何选型