Properties 使用Apache Karaf etc/<;的示例;示例pid>;。cfg文件存储自定义属性,并在Camel-javadsl路由中使用它们
我想使用在$KARAF_HOME/etc/下的自定义配置文件中定义的自定义属性,并在我的apachecamel-javadsl路由中使用这些属性。有人能帮我举个例子来说明详细的步骤吗 在Karaf端,配置详细信息如下所示(文件位于$Karaf_HOME/etc目录中) 配置文件:$KARAF_HOME/etc/client.cfg 文件中的内容: dev.userID=userName@client.com dev.password=secretPassword 下面的代码片段是我尝试使用JavaDSL以驼峰路线访问上述道具的地方Properties 使用Apache Karaf etc/<;的示例;示例pid>;。cfg文件存储自定义属性,并在Camel-javadsl路由中使用它们,properties,configuration,apache-camel,apache-karaf,Properties,Configuration,Apache Camel,Apache Karaf,我想使用在$KARAF_HOME/etc/下的自定义配置文件中定义的自定义属性,并在我的apachecamel-javadsl路由中使用这些属性。有人能帮我举个例子来说明详细的步骤吗 在Karaf端,配置详细信息如下所示(文件位于$Karaf_HOME/etc目录中) 配置文件:$KARAF_HOME/etc/client.cfg 文件中的内容: dev.userID=userName@client.com dev.password=secretPassword 下面的代码片段是我尝试使用Jav
from("timer:someTimer?period=10000")
.setHeader("userID",simple("${env.userID}")
.setHeader("password",simple("${env.password}")
.log("${header[userID]}")
.log("${header[password]}")
.end();
上面的代码抛出了一个错误(见下文)
请帮助我如何在Camel路由中访问这些属性(使用Java DSL),配置(.cfg)文件位于$KARAF_HOME/etc目录中。希望我的问题描述可以理解。您使用Camel simple language()来读取属性,这可以通过
.setHeader("userID",simple("{{dev.userID}}")
或
${env:DEMO}用于读取名为DEMO的环境变量。在您的情况下,您不必这样做,因为您有一个属性文件
但首先必须在Camel上下文中加载属性文件(client.cfg)。为此,请使用初始化PropertiesComponent,如:
PropertiesComponent pc = new PropertiesComponent();
pc.setLocation("file:${karaf.home}/etc/client.cfg");
context.addComponent("properties", pc);
其中context是您的Camel上下文。在搜索有关StackOverflow的更多帮助后,我终于能够实现我所需要的。下面的代码段监视文件,并在文件更新/编辑时触发 多亏了。 请注意,ApacheKaraf关于修改运行时更新的声明不起作用。请参考其官方文档第4.8.1节,也没有适当的示例(任何地方)指导在使用Java DSL的骆驼路线中使用${KARAF_HOME}/etc/下的自定义属性。如果有人能用详细的例子说明在所有三个层面上需要做什么,我们将不胜感激
谢谢。谢谢,Themis Pyrgiotis,我们能在骆驼路线中不使用Properties组件实现吗?ApacheKaraf的文档说${Karaf.home}下的配置文件的任何更新/etc是动态的您建议的方法是否能够在运行时采用更改?我刚刚实现了它,并且能够看到cfg文件中包含数据的日志,但是它没有侦听在同一属性上进行的运行时更新?有什么想法吗?下面是我更改值后在日志中打印的行。信息apache-karaf-4.2.5\etc]正在更新示例中的配置。欢迎@SaiBhaskar。那么,最终是否需要属性组件?我知道与属性cfg文件的连接是通过OSGI Blueprint自动完成的,但我现在不知道这是否像您正在使用的Java DSL一样提供。如果我的答案解决了你的问题,请接受我的答案。自动重新加载不包括在您的初始问题中,也许您应该为此打开一个新问题。谢谢@Themis Pyrgiotis的回答,但我的要求是在运行时更新属性,这是我相信的任何属性文件的全部目的,Apache Karaf声称能够做到,但我不这么认为。我使用具有“幂等键”和“noop”特性的文件组件实现了这一点。感谢Abhishek Chatterjee()抱歉,但您最初的问题是在骆驼中使用属性。没有提到你上一次所说的话。
.setHeader("userID",simple("${properties:dev.userID}")
PropertiesComponent pc = new PropertiesComponent();
pc.setLocation("file:${karaf.home}/etc/client.cfg");
context.addComponent("properties", pc);
from("file:testingFolder?recursive=true&idempotent=true&idempotentKey=${file:name}-${file:size}&readLock=changed&noop=true")
.log(LoggingLevel.INFO, "Logger","${body}")
.end();