问题:我注意到[1]中描述的对properties组件的修改不会影响注入到bean中的配置属性。在我的例子中,我希望将PC的environmentVariableMode设置为重写(fallback是默认设置)。
虽然重写在路由中是有效的,但是bean被注入了原始的属性值。
Application.properties中的属性“hi”被设置为“hello”,环境变量“hi”被设置为“huhu”,当environmentVariableMode被设置为override(2)时,环境变量“hi”将重写前者。
System env var hi=Huhu
14:34:02.282 [Camel (camel-1) thread #2 - timer://foo] INFO route1 - Huhu from route
14:34:02.297 [Camel (camel-1) thread #2 - timer://foo] INFO route1 - Hello from bean
public class MyApplication {
private MyApplication() {
}
public static void main(String[] args) throws Exception {
Main main = new Main();
main.addConfigurationClass(MyConfiguration.class);
main.addRouteBuilder(MyRouteBuilder.class);
main.run(args);
}
}
public class MyConfiguration {
@BindToRegistry
public MyBean myBean(@PropertyInject("hi") String hi) {
return new MyBean(hi);
}
}
public class MyBean {
private String hi;
public MyBean(String hi) {
this.hi = hi;
}
public String hello() {
return hi + " from bean";
}
}
public class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
CamelContext context = getContext();
PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class);
pc.setEnvironmentVariableMode(PropertiesComponent.ENVIRONMENT_VARIABLES_MODE_OVERRIDE); //default is FALLBACK
System.out.println("System env var hi=" + System.getenv("hi"));
from("timer:foo?repeatCount=1")
.log("${properties:hi} from route")
.bean("myBean")
.log("${body}");
}
}
application.properties:
hi = Hello
public class MyApplication extends Main {
private MyApplication(String[] args) throws Exception {
addConfigurationClass(MyConfiguration.class);
addRouteBuilder(MyRouteBuilder.class);
run(args);
}
@Override
protected void postProcessCamelContext(CamelContext camelContext) throws Exception {
PropertiesComponent pc = camelContext.getComponent("properties", PropertiesComponent.class);
pc.setEnvironmentVariableMode(PropertiesComponent.ENVIRONMENT_VARIABLES_MODE_OVERRIDE);
super.postProcessCamelContext(camelContext);
}
public static void main(String[] args) throws Exception {
new MyApplication(args);
}
}
对Camel开发的建议:将environmentVariableMode设置为默认重写而不是回退是否更有意义,尤其是在考虑容器部署时:环境变量优先于系统属性,而系统属性优先于应用程序配置(例如application.properties)?
[1]https://github.com/apache/camel/blob/master/components/camel-properties/src/main/docs/properties-component.adoc
是的,最好有ENV覆盖,欢迎您登录JIRA并在github PR上工作。我们爱贡献http://camel.apache.org/support.html
我记录了一张票:https://issues.apache.org/jira/browse/camel-13502
好的,这已经被实现为默认模式,您也可以从application.properties文件等进行配置:https://github.com/apache/camel/blob/master/examples/camel-example-main/src/main/resources/application.properties#l23
我有一个向spark独立单节点集群提交spark作业的maven scala应用程序。提交作业时,Spark应用程序尝试使用spark-cassandra-connector访问Amazon EC2实例上托管的cassandra。连接已建立,但不返回结果。一段时间后连接器断开。如果我在本地模式下运行spark,它工作得很好。我试图创建简单的应用程序,代码如下所示: SparkContext.Sca
你好,我正在尝试编写一个简单的独立java FTP程序,使用Apache Camel从FTP服务器位置下载文件到我的本地机器。当我运行is时,我看到它一直在运行,实际的文件传输并没有发生。可能是什么问题?
问题内容: 我正在尝试制作一个第三方的简单的独立/摇摆应用程序,该应用程序使用hibernate模式在另一个应用程序的数据库上进行连接,所以这是我所做的: 1-使用的jar: 2- hibernate.cfg.xml(位于src文件夹中): 3- SessionFactoryHelper: 4-样本查询: 运行该应用程序时,出现以下异常: 谁能告诉我我的配置出了什么问题? 问题答案: 这个问题与H
本文向大家介绍docker配置独立桥接IP的方法,包括了docker配置独立桥接IP的方法的使用技巧和注意事项,需要的朋友参考一下 使用端口映射(NAT)的方式存在一个弊端,当多个容器都需要使用某个端口时或者host主机端口与容器端口冲突时(例如,host主机搭建了80的服务,两个容器也都搭建了80的服务,那个只有1个服务可以使用本机的80端口,其他服务都要映射为其他端口) 为容器配置独立的桥接I
我有一个Spring Web应用程序(内置在maven中),我用它连接到我的火花集群(4个工作人员和1个主机)和我的cassandra集群(4个节点)。应用程序启动,工作人员与主机通信,cassandra集群也在运行。然而,当我通过我的web应用程序的界面进行PCA(火花mllib)或任何其他计算(集群、皮尔逊、斯皮尔曼)时,我得到以下错误: java.lang.ClassCastExceptio
为什么我们不再需要它们在集群中?netty-acceptor到底代表什么?