Apache camel 如何在表达式中捕获原始端点URI(收件人列表EIP)

Apache camel 如何在表达式中捕获原始端点URI(收件人列表EIP),apache-camel,Apache Camel,我试图使用收件人列表EIP在运行时根据数据库()中的配置条目动态生成使用者端点URI。我有很多路由,我想用这种方式处理,所以我想建立一些可以处理多个路由的通用方法 因此,我的想法是在内存中保留这些URI值的映射,并将其键入某种类型的标识信息(原始端点URI似乎是一种逻辑选择),如果/当更新数据库以保持路由同步时,这些信息将被更新,并防止每次交换都必须访问数据库。使用RouteBuilder,我使用收件人列表和Bean表达式设置路由 from(endpointUri).recipientList(

我试图使用收件人列表EIP在运行时根据数据库()中的配置条目动态生成使用者端点URI。我有很多路由,我想用这种方式处理,所以我想建立一些可以处理多个路由的通用方法

因此,我的想法是在内存中保留这些URI值的映射,并将其键入某种类型的标识信息(原始端点URI似乎是一种逻辑选择),如果/当更新数据库以保持路由同步时,这些信息将被更新,并防止每次交换都必须访问数据库。使用RouteBuilder,我使用收件人列表和Bean表达式设置路由

from(endpointUri).recipientList(bean(MyBean.class, "getUri"));

我知道我可以使用getUri方法的Bean绑定捕获各种对象,例如交换、主体、头(只要我知道名称)等。是否有可能以某种方式获取原始端点URI值,以便我可以将其用作键来获取正确的使用者端点

Exchange接口具有返回端点的方法。端点接口具有返回字符串的方法。也许这就是你需要的?如果这还不够,您可以在某个点设置头值,然后在稍后的路由中检索它们。

请注意,与路由的定义方式相比,getEndpointUri()返回的URI的形式可能有所改变。e、 我用这个名称(作为生产者)定义了一个路由,“direct:route1”,并返回getEndpointUri()direct://route1".