有可能将 Apache Solr 与 Spring Batch 集成吗?
我阅读了有关Apache Solr和Spring Batch的信息. Apache Solr是强大的搜索技术.现在,我们想从Apache Solr读取数据,然后Spring Batch将处理该数据并将写入数据库. . 我搜索了很多,但是我对此整体无法获得演示. 是否可以将Apache Solr与Spring Batch集成? 解决方案 我们已经完成了基于弹簧批次的应用程序,该应用程序确实在Solr云上进行索引,这等同于Solr"数据导入请求处理程序". 步骤1:从数据库读取
20 2024-04-23
编程技术问答社区
Spring Batch : 带有BigDecimal格式的PassThroughFieldExtractor
我正在使用Spring Batch从具有各种列类型的DB表中提取CSV文件.样品表SQL模式为 [product] [varchar](16) NOT NULL, [version] [varchar](16) NOT NULL, [life_1_dob] [date] NOT NULL, [first_itm_ratio] [decimal](9,6) NOT NULL, " first_itm_ration"字段的示例数据库列值 first_itm_ratio 1.050750 0.920000 ,但我希望我的CSV从值中删除落后的零. first_itm_ratio 1.05075 0.92 我不必为表中的每个特定字段定义格式,而是针对该数据类型的所有列具有特定对象的格式. 我的csvfilewriter bean
6 2024-03-30
编程技术问答社区
处理后的Spring Batch移动文件
我是春季批次的新手. 我必须从文件夹中读取多个文件(定界符),然后将它们加载到DB中.我做了. 但是我的问题是在处理每个文件之后,我必须将文件移至processed文件夹或错误记录到Error文件夹. 例如,如果我从多个文件中处理以下文件(abc.txt): D|hello1|123 D|hello2|three - Error D|hello3|123 我知道第二记录是错误. 现在,我必须在错误文件(abc-error.txt)中写入错误记录以进行错误文件夹,然后继续下一个记录.处理文件成功地排除了错误记录后,我需要将abc.txt移动到处理后的文件夹中. 我该如何达到上述要求? 我的工作:
14 2024-03-29
编程技术问答社区
如何提高SpringBatch中FlatFileItemReader的性能?
我正在编写弹簧批次,该弹簧批次从平面文件中读取,很少处理并将摘要写入输出文件.与读者相比,我的处理器和作家相对较快.我正在使用FlatFileItemReader,并尝试从50-1000开始进行广泛的提交间隔.我的批处理工作必须以更快的速度处理100亿记录.请让我知道提高FlatFileItemReader速度速度的方法.粘贴在我的配置文件下方,我的映射类别读取字段集并将值设置为POJO bean.非常感谢. batchfileconfig.xml
14 2024-03-29
编程技术问答社区
如何在spring batch中使用单个作业/JMSwriter在多个队列中发布信息
我是Spring Batch的新手,最近开始使用它. 我有一个要求,我需要使用单个作业在不同队列上发布/写下每个数据库记录中读取的消息.因为我必须使用阅读器阅读DB的消息并使用处理器来决定我必须发布哪个队列. 所以我的问题是我可以使用单个JMSWRITER在不同的队列上发布消息,因为我必须使用单个作业和DB读取器. 预先感谢 解决方案 我知道JMSwriter不支持它(它写入jmsTemplate的默认目的地). 但是,您可以在其中实现自己的ItemWriter,在其中注入全部jmsTemplates并编写自定义逻辑以选择适当的命运并写入它. 另一种方式 - 使用
4 2024-03-29
编程技术问答社区
如何使用Spring batch有效和正确地将顺序活动加载到数据库?
我目前正在研究一个项目,将.DAT文件信息加载到数据库.但是,此.DAT文件不仅包含数据,还包含操作.第一个字段表示记录的动作,而其他所有字段只是数据. 以下是一些示例记录: key1 key2 data1 data2 D KEY1 KEY2 DATA1 DATA2 C KEY1 KEY2 DATA1 DATA2 让,a = add,d = delete,c =更新 文件大小约为5GB. 在这种情况下,记录的顺序是过程至关重要.是否可以使用Spring Batch进行批处理处理?我的前任完成的先前实现是创建3个列表:AddList,Deletelist,UpdateList,并为其分别为其生成DML语句.虽然加载时效率非常高,但是它不起作用,因为您执行这些列表的顺序无关紧要,但可能会导致数据不一致.因此,要保持数据有效,我相信必须按顺序执行这些记录. 我想出的一种解决方案是将读取器的获取尺寸设置为1.但这似乎打败了春季批次的目的. 有更好的方法可以做到吗?也许不是春季批
4 2024-03-29
编程技术问答社区
我们可以在一个需要跳过第一行和最后一行的文件上使用Spring批处理项目读写器吗?
进行一些验证后,我有一个文件要写给数据库.该文件将具有需要验证然后跳过的标题和拖车,如果满足验证验证,则介于两者之间的所有界线应映射到DB.我可以使用项目阅读器和作家来做到这一点吗?下面是一个示例文件数据,该数据具有标头线,一个拖车线,在它们之间,其中包含要加载到db的实际数据的线.任何帮助都将不胜感激. 标题| xxxxx | 20190405T143025Z linedata|linedata|linedata|linedata|||linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata| linedata | linedata 拖车| 20190405T143025Z |
4 2024-03-29
编程技术问答社区
储存程序ItemReader无法在死锁异常时重试
由于数据库上的Deadock例外,我很难将其存储的ProprocedureItemReader重试. 这是我的步骤过程的配置: @Bean public Step Step() throws Exception { return stepBuilderFactory.get("Step") .chunk(100) .reader(storedProcItemReader()) .processor(studentItemProcessor) .writer(fileItemWriter()) .faultTolerant() .retryLimit(5)
0 2024-03-29
编程技术问答社区
flatfileitemwriter与复合作者示例
我有一个弹簧批次,该批次将读取CSV文件,然后处理并将其写入另一个CSV文件.我想根据过程结果将结果写入两个不同的平面文件.需要在另一个文件中成功编写经过处理的记录,并在另一个文件中写入故障记录. 我看到了几个示例使用" CompositeItemWriter",但是对于多个" FlatFileItemWriters"没有确切的示例. 有人,请分享我用例的示例? 当有效项目应写入两个或多个输出时,使用 解决方案 CompositeItemWriter.在您的情况下,A SkipListener更合适,可用于将无效的项目写入其他文件.这是一个快速示例: import java.util.Arrays; import java.util.Collections; import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.batch.core.
8 2024-03-29
编程技术问答社区
Spring Batch RepositoryItemWriter不将数据写入数据库
@Configuration public class DataSourceConfig { @Bean @ConfigurationProperties("spring.datasource") public DataSource appDataSource() { DataSourceBuilder builder = DataSourceBuilder.create(); builder.driverClassName("org.mariadb.jdbc.Driver"); builder.url("jdbc:mariadb://localhost:3306/people"); builder.username("user"); builder.password("pwd"); return builder.build(); } } @Configur
12 2024-03-29
编程技术问答社区
在Kubernetes集群的特定节点上有条件地启动Spring Cloud任务
我正在构建用于批处理处理的数据管道.我发现春季云数据流是一个非常有吸引力的框架.如果没有SCDF和Kubernetes的知识,我不确定是否可以在特定的机器上有条件地启动弹簧云任务. 假设我有两个用于运行批处理过程的物理服务器(服务器A和服务器B).默认情况下,我希望在服务器A上启动我的弹簧云任务.如果服务器A关闭,则应将任务部署在服务器B上.Kubernetes/scdf可以处理这种机制吗?我想知道nodeselector是否应该研究. 解决方案 是的,您可以在启动任务时将deployment.nodeSelector作为部署属性. deployment.nodeSelector是Kubernetes部署属性,因此您需要通过这样的内容: task launch mytask --properties "deployer..kubernetes.deployment.nodeSelector=foo1:bar1,foo2:bar2"
2 2024-03-29
编程技术问答社区
如何在spring batch中的单一项目阅读器中同时读取逗号分隔和管线分隔的csv文件?
我是Sprig Batch的新手. 我有一个包含多个CSV文件的文件夹,我已经实现了MultiReSourCeiteMreader()来读取这些文件.它仅在所有CSV文件分开时才能正常工作. 我想使用单一阅读器读取COMMA(",")分开的CSV和管道分离CSV.是否可以 ?如果是如何? 这是我的代码 @Bean @StepScope public MultiResourceItemReader multiResourceItemReader(@Value("#{jobParameters[x]}") String x,@Value("#{jobParameters[y]}") String y,@Value("#{jobParameters[z]}") String z) { Resource[] resourcessss = null; ClassLoader cl = this.getClass().getClassLoader(
8 2024-03-29
编程技术问答社区
在弹簧批处理中重试读者
我写了一个春季批处理应用程序,项目阅读器正在抛出异常. 如何重试项目阅读器? 我已经添加了 @EnableRetry在应用程序类中及以下是读取器代码 @Bean @Retryable(include = { RuntimeException.class }, maxAttempts = 1000, backoff = @Backoff(delay = 0)) public ItemReader reader() { return new InMemoryStudentReader(); } 以下是读者类 public class InMemoryStudentReader implements ItemReader { @Autowired private JdbcTemplate jdbcTemplate; private int nextStudentIndex; private List
4 2024-03-29
编程技术问答社区
是否有办法避免用Spring Batch处理同一个文件两次?
我正在研究3个步骤的弹簧批处理项目.首先,它将所需的文本文件从FTP下载到本地,然后对其进行处理,最后每10分钟删除本地目录中的文件.每10分钟,有FTP中加载了新文件.如果在FTP中出现一些问题并且不会加载新文件怎么办?然后弹簧批处理项目下载相同的文件并再次处理.所以我的问题是,如何避免两次弹簧批次处理同一文件? 编辑:我已经使用了Apache Common Library从FTP下载文件. 而且我正在使用MultiresourceitemReader在每次运行时绘制2个文本文件. 解决方案 我将使用文件名作为作业参数.这将为每个文件创建一个作业实例. 现在,由于Spring Batch防止运行相同的作业实例以多次完成,因此每个文件仅处理一次,您可以避免通过设计两次处理相同的文件.
12 2024-03-29
编程技术问答社区
春天的批处理。我可以根据大小写入多个文件吗?
我们正在从事春季批处理工作,我们需要根据大小写入多个文件.例如,我们需要写入输出文件output1.txt,一旦达到文件大小的5 mb,就必须写入output2.txt. 请建议 在春季批处理中是否有任何OOTB功能,我们可以实现它,还是需要编写自定义代码以实现此 解决方案 春季批处理项目作家,尤其是FlatFileItemWriter的作者不支持Maxfilesize属性,实际上并不是作者检查大小的工作. 我建议 1-)在第一步中实现一个文件和输出output.txt的作者. 2-)将第二步作为一个任务,该任务为输出. 这样,您将将文件分配逻辑与主要步骤分开.
4 2024-03-29
编程技术问答社区
基于项目字段的Spring批处理完成政策
我正在尝试实现完整的项目,其中我需要根据提交的一些来决定完成,例如说我的物品是订单类,我需要加上订单数量,一旦金额超过1000,我希望零钱才能完成. ordeer.amount 但是,在Ploterionpolicy中,我从来没有得到物品.还有另一种实现方法吗? 否则我可以以某种方式在PostermionPolicy中获得项目 解决方案 您可以使您的CompletionPolicy实现ItemReadListener( http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/core/itemreadlistener.html ).您可以通过ItemReadListener.afterRead方法访问项目. 与其他标准批处理组件(如读者,处理器,作家和任务)相比,实现侦听器接口的完成策略确实会自动注册. 因此,您需要将完成策略明确注册为听众.
6 2024-03-29
编程技术问答社区
春季批量重试与retrytemplate不起作用
我在此示例中尝试了弹簧批次重试. 重试功能在Spring Batch 中不起作用,并且可以正常工作. 我正在尝试使用retrytemplate实现同样的方法,但看不到重试例外时无法正常工作. @Configuration @EnableBatchProcessing //@EnableRetry public class RetryBatchJob { @Autowired private JobBuilderFactory jobs; @Autowired private StepBuilderFactory steps; @Bean public ItemReader itemReader() { return new ListItemRea
10 2024-03-29
编程技术问答社区
如何在spring batch中读取一个复杂的JSON?
我在下面有一个复杂的JSON.我正在使用FlatFileItemReader阅读它.使用我的自定义的复杂jsonrecordSeparatorPolicy,我如何忽略最后一行"]". [ {"firstName":"Tom", "lastName":"Cruise"}, {"firstName":"Bruce", "lastName":"Willis"}, {"firstName":"Liam", "lastName":"Neeson"} ] 我的复杂jsonrecordSeparatorPolicy看起来像下面.当我在第4行中拥有"]"时,此类正在成功地工作,但是当我的邮政处理器删除该行而不是忽略时,它仅在第5行提供"]"时会引发错误. public class ComplexJsonRecordSeparatorPolicy extends JsonRecordSeparatorPolicy { @Override public boole
6 2024-03-29
编程技术问答社区
带有弹簧批次的模块化批处理工作环境5
我正在升级到Spring Batch 5/Spring Boot 3/Jakarta 10.使用Spring Batch 5,@EnableBatchProcessing(modular=true)不像以前那样行事,因为它现在禁用了Spring Batch的自动配置,这意味着我必须必须在春季批处理之前配置了几乎所有我自己配置​​的东西. 我想避免这种情况(因为我认为它需要更多的努力),因此我必须从应用程序中删除@EnableBatchProcessing(modular=true),并以某种方式手动将上下文模块化. 我的应用程序 我有一个带有4个作业的批处理应用程序,可能会添加更多作业. 每个工作都定义了自己的典型豆,例如 ItemReader itemProcessor itemwriter TransActionManager 资源 我基本上需要对单个作业进行模块化的整个配置,以便所有豆类生活在自己的上下文和其他作业创建的豆类中.例如,在作业jo
8 2024-03-29
编程技术问答社区