Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache Camel在多个文件上触发路由_Java_Apache Camel - Fatal编程技术网

Java Apache Camel在多个文件上触发路由

Java Apache Camel在多个文件上触发路由,java,apache-camel,Java,Apache Camel,我们在应用程序中配置了几个camel路由,但只要将单个文件放到目录中,每个路由都会触发。 其中一个路由(路由A)轮询两个文件,然后移动到/完成。 我需要创建一个路由B,只有当路由a的两个文件都在/done中时,它才会触发(将另一个文件移到别处)。 在线文档中没有立即明确如何执行此操作。您描述的是一个需要状态的事件驱动设计(需要移动2个文件) routeA移动文件X。。完成后。。向主题/队列发送事件 routeB移动文件。。完成后。。向主题/队列发送事件 根据这种情况发生的时间和频率,以及您是否需

我们在应用程序中配置了几个camel路由,但只要将单个文件放到目录中,每个路由都会触发。 其中一个路由(路由A)轮询两个文件,然后移动到/完成。 我需要创建一个路由B,只有当路由a的两个文件都在/done中时,它才会触发(将另一个文件移到别处)。
在线文档中没有立即明确如何执行此操作。

您描述的是一个需要状态的事件驱动设计(需要移动2个文件)

  • routeA移动文件X。。完成后。。向主题/队列发送事件
  • routeB移动文件。。完成后。。向主题/队列发送事件
  • 根据这种情况发生的时间和频率,以及您是否需要关联a&B的方法,您需要相应地设计可靠性

    3a。routeC侦听主题/队列,您可以使用聚合器来等待这两个主题/队列

    --或--

    3b。routeC侦听主题并将数据存储在发生错误的db/temp存储区中。。然后B出现了

  • 已完成A&B时查找的路由轮询。。然后使用轮询消费者开始处理文件C

  • [Camel Polling Consumer][1]

    您能提供到目前为止您所做的工作吗?也许组件就是您要寻找的?我认为聚合器将合并两个文件,而我只需要在两个特定文件位于一个目录中时触发路由。我有两条路径,它们都可以移动文件。路由A将移动两个文件并将它们复制到它的“完成”目录。路由B将由存放在路由a的done dir中的文件触发。我需要路由B等待,直到两个文件都被A移动到完成。谢谢你的回答。最后,我在路由B上使用了DefaultPollingConsumerPollStrategy的扩展。因此,在begin方法中,只有当路由A移动的两个文件都存在于“done”文件夹中时,我才返回true。这会导致路由B在满足该条件之前不移动其文件。