如何在驼峰上下文中创建临时变量以供稍后在路由中使用

时间:2016-04-26 06:25:44

标签: http-headers apache-camel cross-cutting-concerns

我有一条与4个http端点交互的路由。第一个http端点是一个授权服务,我将从中获得一个身份验证令牌。我想要的是,一旦我从授权服务获得令牌,我将把令牌传递给标头中的每个进一步的http服务。那我怎么能实现呢?有没有办法使用令牌值创建临时变量,如果我可以将它放在上下文中然后在任何端点我可以设置它。 或者我在想我是否可以在应用程序启动时调用一次授权服务并将令牌存储在某处并且我可以使用它。

2 个答案:

答案 0 :(得分:1)

您可以在交换对​​象上存储属性:

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html#setProperty(java.lang.String,%20java.lang.Object)

例如在我的"管道"我从DB存储ID以供以后使用:

from("quartz2://myScheduler?cron=0+0+6,14,22+*+*+?")
   .to("sql:" + getNextID() + "?dataSource=#dataSource&outputType=SelectOne")
   .setProperty("NextID", simple("${body[id]}"))

然后,可以从交换exchange.getProperty("NextID")

访问 NextID

答案 1 :(得分:0)

您可以使用headersproperties