来自(“quartz2:/timer?cron=0+0/1+++*+?”).noAutoStartup().routeId(ROUTE_ID).log(“route started”).tod(http://localhost:3420/contextPath?from=${bean:bean.from}“+”&size=${bean:bean.size}“).process(处理器)
似乎是,每次通过Quartz点击都触发了相同的URL,因此我看到重复的值保存到DB中。请说明为什么动态uri没有按预期工作。
我正在调用处理器,计算并设置从endpoint响应中得到的Bean值。但当Quartz下一次点击url时,bean值不会更新,而是取默认值。Bean定义通常是getter setter,注册是我用过的简单注册表
SimpleRegistry simpleRegistry = new SimpleRegistry ();
// create CamelContext
context = new DefaultCamelContext (simpleRegistry);
simpleRegistry.put("bean", bean);
提前致谢
为了在骆驼路由上使用动态URI,必须在一个简单表达式中包含变量。
由于Camel 2.16.0版本endpoint实现tod()
支持简单表达式语言,因此您可以将动态URI定义为消息endpoint:
from("quartz2://timer?cron=0+0/1+++*+?")
.noAutoStartup()
.routeId(ROUTE_ID)
.log("Route Started")
.toD( "http://localhost:3420/contextpath?from=${bean:bean.from}&size=${bean:bean.size}" );
因此,表达式${Bean:Bean.from}
和${Bean:Bean.size}
应该通过在URI-String中使用Bean语言直接插值。这个bean-componentbean:
告诉Camel用您指定的名称bean
注册bean,并调用指定的方法from
和size
。
Apache Camel:Rest DSL,Using Dynamic to()一节也有一个说明:
注意:我们需要使用.endrest()
来告诉Camel路由的终点,这样我们就可以回到Rest DSL并继续定义Rest服务。
否则,您可以在常规to()
中使用simple来实现动态endpoint。请参见Apache Camel:如何在to()中使用动态URI。
我有一个web服务,它对某个作业进行动态调度。job是一个Java类,它扩展了Quartz job接口 我还公开了一个API,它接收一个jobId、cron表达式,并调度一个新的StartJob(它将具有接收到的ID)。下面是我的Spring配置: 我错过了什么?这样的配置正确吗?从工厂中检索到的作业和触发器是同一个类的新实例还是同一个类实例?
例如,用Java编写的程序在很大程度上依赖于动态调度。
我使用Quartz Scheduler(使用JobDetailFactoryBean)和Spring来安排一些作业。现在我通过XmlApplicationContext通过spring配置实现了这一点,我必须将其更改为AnnotationConfigApplicationContext。那么,我如何在AnnotationConfigApplicationContext中实现这个cronjob呢。这
问题内容: 在上面的程序中,我尝试调用 aObj.b时 遇到错误。 1.为什么我无法通过aObj访问该变量,尽管它引用的是B类? 2.为什么我可以使用show()方法? 问题答案: 你有区分 静态类型 的和 运行时类型 的。 代码如 产生具有静态类型和运行时类型的变量。 在决定允许或不允许的内容时,编译器也只会考虑 静态类型 。 对您的问题: 1.为什么我无法通过aObj访问该变量,尽管它引用的是
我正在使用 这是可行的,但当我使用集群环境时,两个线程正在为同一作业运行。 我使用的是注释而不是属性文件。我只想运行一个线程。有人能帮忙吗。如何配置? 我的代码几乎像:http://k2java.blogspot.com/2011/04/quartz.html