我在动态路由概念和消费者规则方面有点挣扎。
因此,假设我有一条包含交换数据的路由,然后我想在“from”端点的不同路由中使用来自交换的标头。
我认为它看起来像这样:
路线一:
from("file:/dir1")
...
.to ("direct:start");
Run Code Online (Sandbox Code Playgroud)
路线2:
from("direct: start")//get the old exchange data
.from("file:/dir1/?fileName=${header.myHeader}")//start consuming from a different endpoint using old exchange data
...
.to("direct: end);
Run Code Online (Sandbox Code Playgroud)
所以这些步骤对我来说似乎是正确的,但我觉得我有点污染了交易所。
对我来说,我使用动态路由,但同时也创建了一个新的消费者。这意味着我正在创建一个新的交易所,对吗?那么,camel 如何知道在其余路线中选择和使用哪个交换?
起初我认为它可能将它们组合在一起,但我做了更多的挖掘,发现你实际上需要使用“丰富”来添加到现有的交换中。
有人可以解释骆驼如何处理这种情况吗?如果你有一个例子,那也很棒。我在骆驼包中搜索了一个,但没有成功。
您可以使用Content Enricher模式实现“动态自” 。
假设您的第一个路由用于将文件名添加到标题中,例如:
from("timer:trigger?repeatCount=1")
.routeId("define-file-name")
.setHeader("myHeader", constant("file.txt"))
.to("direct:start");
Run Code Online (Sandbox Code Playgroud)
然后,您的第二条路由可以使用来自交换标头的信息来轮询该文件,如下所示。
from("direct:start")
.routeId("poll-file")
.pollEnrich().simple("file://dir1?fileName=${in.header.myHeader}").timeout(10000)
.log("${body}");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1595 次 |
| 最近记录: |