gpt4 book ai didi

java - 使用 apache camel、smooks 和 flatpack

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:35:05 26 4
gpt4 key购买 nike

我正在使用 camel 和 smooks 编写路由,生产者作为 JPA 存储库,生成 JPA 对象列表,我需要将其作为固定宽度文件发送到 sftp 服务器。

这是我认为发生这种情况所必需的

  1. 使用 JPA 生成对象列表的存储库(我有这个)
  2. 从 smooks 到 flatpack 的映射,它采用上述列表的 xml 版本,并将其转换为固定宽度的文件
  3. 从存储库开始到通过 sftp 发送的文件结束的 Camel 路线:

这是我的代码:

public class RetirementRoute extends RouteBuilder {

@Override
public void configure() throws Exception {

onException(Throwable.class)
.maximumRedeliveries(3)
.useExponentialBackOff()
.backOffMultiplier(4)
.logRetryAttempted(true)
.handled(true)
.log(LoggingLevel.ERROR, "Error transmitting file to miliman")
.to("log:org.fuwt?level=ERROR&showAll=true");

//define the fixed width mapping
FlatpackDataFormat df = new FlatpackDataFormat();
df.setDefinition(new ClassPathResource("META-INF/smooks/fuintegration/retirement-fixed-width-mapping.xml"));
df.setFixed(true);
df.setIgnoreFirstRecord(false);

from("bean:retirementRepository?method=getRetirementMembers")
.to("log:org.fuwt?level=INFO")
.transacted("CRM_PROPAGATION_REQUIRED")
.routeId("retirement_member_exchange")
.aggregate(property("CamelCreatedTimestamp"), new RetirementAggregationStrategy()).completionFromBatchConsumer()
.marshal(df).log("log:org.fuwt?level=ERROR&showAll=true")
.to("file://Users/smohamed/tests/?fileName=marshal.test.txt");
}
}

但是,当我运行单元测试时,出现以下错误:

ArrayList cannot be converted to RetirementMember

我认为这意味着 flatpack 不知道如何处理列表,并且需要在每个对象的基础上处理一个对象。

因此,我正在寻找的是类似于 freemaker 模板的 smooks 映射,但我想使用 flatpack 的列定义而不是 freemaker 模板:

<?xml version='1.0'?>  
<!DOCTYPE PZMAP SYSTEM "flatpack.dtd" >
<PZMAP>
<COLUMN name="ssn" length="11" />
<COLUMN name="lastName" length="20" />
<COLUMN name="firstName" length="15" />
</PZMAP>

解决此问题的最佳方法是什么?可用的文档不多,我已经搜索了数周

谢谢

山姆

最佳答案

事实证明,Flatpack Data Format 不需要一个 java ArrayList 对象,而是一个 List> 对象,其中 Map 包含 ZMAP-XML 映射文件中每一列的定义名称,以及它代表的对象,所以例如,字段名字在 map 中将作为 map.put("firstname","Sam")

我通过下载 apache camel 源代码并查看 Flatpack 的单元测试发现了这一点,之后我能够让我的路线工作。

关于java - 使用 apache camel、smooks 和 flatpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8929903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com