【发布时间】:2012-03-17 08:42:43
【问题描述】:
我最近开始玩 Apache camel。所以作为实验类型,我想我会创建一个简单的项目,它会每隔几秒钟扫描一个文件目录,看看我是否有一个新文件选择该文件,然后将其复制到另一个文件夹。稍后我想将这些文件放入数据库中。
所以首先保持基础,我创建了如下路线:
from("file://c:/CTest/inbox?noop=true")
.to("file://C:/Ctest/outbox");
这很有效,我认为可以让我们添加一个计时器。最初我犯了使用计时器的错误并尝试了这个:
from("timer://myTimer?period=50").to("file://c:/CTest/inbox?noop=true")
.to("file://C:/Ctest/outbox");
然后我遇到了一些关于无法写入文件的奇怪异常。然后我通过将文件路由放在计时器路由之后实现了它成为生产者。所以我研究了一下,这就是我有点困惑的地方。
所以据我了解,文件组件使用预定的轮询模式。文件路由 url 模式中甚至还有 pollStrategy 选项。还有一个轮询消费者 EIP。
这就是我的困惑所在。
1) 如果文件组件使用计划轮询模式,它是否使用/实现轮询消费者 EIP?
2) 如何向文件组件添加一个简单的计划,以每隔 30 秒消耗一次文件?
3) 如何通过实现 org.apache.camel.PollingConsumerPollStrategy 创建自己的 pollingStrategy?
我怀疑我可以这样做:
from("file://c:/CTest/inbox?noop=true&pollStrategy=some-expression")
.to("file://C:/Ctest/outbox");
我试图在这方面举一些例子,但我要么没有找到正确的地方,要么完全错过了情节。我想这与其说是与代码相关的问题,不如说是这种方法的最佳策略/模式。
谢谢 南非类
【问题讨论】:
-
您能指导一下您是如何使用 from() API 的吗?我不确定需要进行哪些配置以及如何进行?
标签: java architecture apache-camel