gpt4 book ai didi

java - 为什么 setHeader 不在流程功能内工作而是在功能之外工作

转载 作者:行者123 更新时间:2023-12-01 08:53:33 25 4
gpt4 key购买 nike

我有一个小型 Camel 项目,其中我从文件系统读取文件并在我的 route 处理它们。在我设置的流程函数内

exchange.getOut().setHeader("tc.GIARO.item.ids",simple("TC00000021"));

之后 .to() 函数不起作用。但是当我将其设置在流程函数之外时,例如

.setHeader("tc.GIARO.item.ids", simple("TC00000021"))

.to() 函数可以识别此 header 并起作用。

如果我在 .process() 或 .setHeader() 函数之后直接使用 .log() ,它会以两种方式注销..

有人知道为什么会发生这种情况吗?

编辑:

@Override
public void configure() throws Exception {

from("file://" + path + "?preMove=inprogress&move=.done")

.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
String myFilename = (String) exchange.getIn().getHeader("CamelFileNameOnly");
String[] tcid = myFilename.split("-");

String filename = (String) exchange.getIn().getHeader("CamelFilePath");
String content = new String(Files.readAllBytes(Paths.get(filename)));

exchange.getOut().setBody(content, String.class);
exchange.getOut().setHeader("tc.GIARO.item.ids", simple("TC00000021")); //whether here
}
})
.setHeader("tc.GIARO.item.ids", simple("TC00000021")) // or whether here
.log("${header.tc.GIARO.item.ids}")
.to("tc://" + ip + "/tc?tcMethod=getItemAndRelatedObjects&tcUser=" + user + "&tcPass=" + pass
+ "&tcSessionKey=1");
}

最佳答案

您必须在 In 消息(而不是 Out 消息)中设置 Header。不要创建新消息(使用 exchange.getOut().setSomething)

@Override
public void configure() throws Exception {

from("file://" + path + "?preMove=inprogress&move=.done")

.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
String myFilename = (String) exchange.getIn().getHeader("CamelFileNameOnly");
String[] tcid = myFilename.split("-");

String filename = (String) exchange.getIn().getHeader("CamelFilePath");
String content = new String(Files.readAllBytes(Paths.get(filename)));

exchange.getIn().setBody(content, String.class);
exchange.getIn().setHeader("tc.GIARO.item.ids", simple("TC00000021")); //whether here
}
})
.setHeader("tc.GIARO.item.ids", simple("TC00000021")) // or whether here
.log("${header.tc.GIARO.item.ids}")
.to("tc://" + ip + "/tc?tcMethod=getItemAndRelatedObjects&tcUser=" + user + "&tcPass=" + pass
+ "&tcSessionKey=1");
}

关于java - 为什么 setHeader 不在流程功能内工作而是在功能之外工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207209/

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