gpt4 book ai didi

java - Apache-Camel:如何控制交换 header 的范围?

转载 作者:行者123 更新时间:2023-11-30 02:53:55 26 4
gpt4 key购买 nike

我使用交换 header 来存储路由中的任何变量。但是,看起来这些 header 将被传递到从此路由调用的其他路由。

在下面的示例中,我调用 getContact 路由,该路由将调用 http 端点。但是,它还会发送从初始路由 direct:start 获得的 header ,variable1 和variable2。

    from("direct:start")
.setHeader("variable1", constant("value1"))
.setHeader("variable2", constant("value2"))
.to("direct:getContact");

from("direct:getContact")
.setHeader("Content-Type", constant("application/json"))
.setHeader("Accept", constant("application/json"))
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.to("http://<host>:<port>/contact/3")
.unmarshal().json(JsonLibrary.Jackson);

有办法避免这种情况吗?相比之下,java中的方法调用将通过上下文切换隐藏所有现有变量。

最佳答案

我之前在使用 http4 发送 Web 服务调用时遇到过这个问题。当您使用 http4/http 端点时,Camel 似乎会发送整个交换,这相当烦人。我通过使用 content enricher 解决了这个问题。我在丰富的路由中使用 http4 进行了实际的调用,并使用了一个简单的聚合策略来组合这两条消息。

或者,您可以在 bean 中进行调用。这样你就失去了 Camel 的一些好处,但你可以完全控制调用主体。

关于java - Apache-Camel:如何控制交换 header 的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809313/

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