在apache-camel中,是否有一种方法可以自动生成routeId,并覆盖现有的路由号(在RouteDefinitionHelper中生成)?
7kjnsjlb1#
据我所知,你可以使用routeNaming上没有autoGeneration策略,但你可以做类似的事情:
private String myURI; from("jms:queue:" + myURI).routeId("JmsComponent:" + myURI) .to("....");
通过使用blueprint或spring将变量注入到java类中,您可以更改URI,它将相应地调整路由名称。您也可以在私有变量中使用完整的URI,然后自己解析endpointURI并将其格式化为routeId。
cl25kdpy2#
您可以直接为路由以及路由中的处理器指定它们。
from("direct:start").routeId("MyMainRoute") .to("direct:out").id("MyOutputProcessor");
这些id将在jConsole中可见,因此您也可以查看路由和处理器的统计信息。
mpgws1up3#
对于spring-camel,您可以使用以下代码:
@Component public class UriNodeIdFactory extends DefaultNodeIdFactory { @Override public String createId(NamedNode def) { String key = def instanceof NamedRoute nr ? nr.getEndpointUrl() : def instanceof EndpointRequiredDefinition ed ? ed.getEndpointUri() : def.getShortName(); if (key.contains("{{") && def instanceof OptionalIdentifiedDefinition od && od.getCamelContext() != null) { key = od.getCamelContext().resolvePropertyPlaceholders(key); } return key.replace(":", "-").replace(".", "_") + getNodeCounter(key).incrementAndGet(); } }
3条答案
按热度按时间7kjnsjlb1#
据我所知,你可以使用routeNaming上没有autoGeneration策略,但你可以做类似的事情:
通过使用blueprint或spring将变量注入到java类中,您可以更改URI,它将相应地调整路由名称。您也可以在私有变量中使用完整的URI,然后自己解析endpointURI并将其格式化为routeId。
cl25kdpy2#
您可以直接为路由以及路由中的处理器指定它们。
这些id将在jConsole中可见,因此您也可以查看路由和处理器的统计信息。
mpgws1up3#
对于spring-camel,您可以使用以下代码: