如何在不同的camel路由上的方法之间共享对象

时间:2014-02-10 15:53:41

标签: java caching apache-camel

我在网上搜索没有运气的东西,我认为这很简单,但显然不是 我想要做的就是在一个在camel路由中调用的方法中创建一个HashSet,然后将这个HashSet传递给另一个camel路由中的方法。
我的搜索返回的是我应该使用缓存,但我找不到任何示例(一个简单的例子),它将告诉我如何实现这个。
第一个路径中的方法“findProperties”创建一个HashSet,我想在“parseFile”方法的第二个路径中使用它。

from("file:{{List}}?noop=true")
.autoStartup(true)
.unmarshal().csv()
.to("bean:ParserUtils?method=findProperties")
.end();


from("file:{{Path}}?move={{processedPath}}")
.autoStartup(true)
.unmarshal().csv()
.to("bean:Parser?method=parseFile")
.end()

我真的很感激在缓存或其他解决方案中获取和设置对象的简单示例。

1 个答案:

答案 0 :(得分:0)

因为你的第一个路由没有调用你的第二个路由,所以它们之间没有消息传递数据...所以是的,你需要使用一些外部手段来访问路由/线程之间共享的数据。

这可以像ParserUtils实例中的类/静态级别变量一样简单,也可以使用camel-cache(ehcache等),camel-hazelcast等等......选择是你的

这里有一些使用camel-cache的例子......

https://svn.apache.org/repos/asf/camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheProducerTest.java