gpt4 book ai didi

java - 使用 Camel 和 Bindy 检查编码的 Pojo

转载 作者:太空宇宙 更新时间:2023-11-04 13:36:22 24 4
gpt4 key购买 nike

我有一个平面文件,需要捕获其中的每一行并将其解码到 POJO 中。我正在使用 CamelBindy 并利用 Splitter EIP。由于某种原因,我无法在解码完成后检查 POJO(使用处理器)。有什么建议么?

我正在尝试在下面的两个 Bindy 转换之后立即调试 Process 内的 Exchange。代码永远不会被调用(断点永远不会到达)

这是我的代码:

from("file://inbox")
.setHeader(Exchange.FILE_NAME,simple("${file:name.noext}-${date:now:yyyyMMddHHmmssSSS}.${file:ext}"))
.wireTap("file://ORIGINAL_BACKUP")
.process(converterProcessor)
.split(body(String.class).tokenize(System.lineSeparator()))
.choice()
.when(new Predicate() {

public boolean matches(Exchange exchange) {
if(exchange.getIn().getBody().toString().startsWith("HEADER1")) return true;
return false;
}
})
.unmarshal()
.bindy(BindyType.Fixed, MessageHeaderGroup_HEADER1.class).process(new Processor() {

public void process(Exchange exchange) throws Exception {
System.out.println("Object: "+ exchange.getIn().getBody());

}
}).to("direct:mhg")

.when(new Predicate() {

public boolean matches(Exchange exchange) {
if(exchange.getIn().getBody().toString().startsWith("HEADER2")) return true;
return false;
}
})
.unmarshal()
.bindy(BindyType.Fixed, TransactionHeaderGroup_HEADER2.class).process(new Processor() {

public void process(Exchange exchange) throws Exception {
System.out.println("Object: "+ exchange.getIn().getBody());

}
}).to("direct:trg")
.otherwise().to("file://outbox");

我对Camel还很陌生。我尝试使用 endChoice() 结束 choice() 但无济于事。如果我使用Filter EIP(仅使用一种可能的Bindy转换),我可以在Process步骤中检查Exchange。但如果我用 Predicate 切换到 choice() ,我就无法做到。感谢您的建议!

最佳答案

为什么使用wireTap?这可能是你的问题。请参阅文档 --> wire-tap

If you Wire Tap a stream message body then you should consider enabling Stream caching to ensure the message body can be read at each endpoint. See more details at Stream caching.

请在您的 converterProcessor 中设置断点并查看交换内部。

如果您只想移动文件,您可以创建一个简单的 .to("file://ORIGINAL_BACKUP") 然后继续。另一种方式:

from("file://inbox?move=ORIGINAL_BACKUP/${file:name.noext}-${date:now:yyyyMMddHHmmssSSS}.${file:ext}")

关于java - 使用 Camel 和 Bindy 检查编码的 Pojo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31657857/

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