Не удалось запустить маршрут [A], так как обнаружен повторяющийся идентификатор: [B] - PullRequest
2 голосов
/ 26 апреля 2020

Получение этой ошибки при загрузке определений остатков через "xml -rests" в Camel Spring Boot 3.2 с путем XML, определенным в свойстве camel.springboot. xml -rests = classpath: folder-camel / folder -rest /*.xml

Мой файл определения отдыха выглядит следующим образом

<?xml version="1.0" encoding="UTF-8"?>
<rests xmlns="http://camel.apache.org/schema/spring" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
       http://camel.apache.org/schema/spring https://camel.apache.org/schema/spring/camel-spring-3.2.0.xsd
       ">
<rest id="id1" path="/test">
<get id="id2" uri="/folderuri">
<to id="id3" uri="log:test-log-rest-route" />
</get>
</rest>
</rests>

Трассировка стека исключений:

org.apache.camel.FailedToStartRouteException: Failed to start route first-test-get-id because of duplicate id detected: first-test-to-id. Please correct ids to be unique among all your routes.
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:344)
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:327)
    at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2598)
    at org.apache.camel.support.service.BaseService.init(BaseService.java:83)
    at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2431)
    at org.apache.camel.support.service.BaseService.start(BaseService.java:111)
    at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2448)
    at org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:121)
    at org.apache.camel.spring.CamelContextFactoryBean.start(CamelContextFactoryBean.java:373)
    at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:420)
    at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:94)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:360)
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:897)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)

1 Ответ

2 голосов
/ 26 апреля 2020

Проблема CAMEL-14969 , была вызвана маршрутом производителя и потребителя для остальной точки, названной одинаково. Возможный обходной путь - ввести тег ROUTE с отдельным идентификатором, чтобы входящий отдых и исходящий маршрут имели разные идентификаторы

<?xml version="1.0" encoding="UTF-8"?>
<rests xmlns= . . . >
<rest id="id1" path="/test">
  <get id="id2" uri="/folderuri">
    <route id="id4">
      <to id="id3" uri="log:test-log-rest-route" />
    </route>
  </get>
</rest>
</rests>
...