Hi I have just fixed that to be !route.... so the WARN is only logged when no custom id has been set.
On Mon, Dec 26, 2022 at 4:08 PM Claus Ibsen <claus.ib...@gmail.com> wrote: > Hi > > Ah yeah it should be NOT custom id assigned. > You are welcome to send a PR > > BTW is there a reason you turn off remove all routes? > > > So the code should be like: > > if (!route.isCustomId()) { > > > > On Mon, Dec 26, 2022 at 2:40 PM Mikael Koskinen <mijap...@gmail.com> > wrote: > >> Hi again, >> >> I checked the source code of RouteWatcherReloadStrategy from here: >> >> https://github.com/apache/camel/blob/00526e77bfa88bc20bcde640487cf7d83629e49d/core/camel-support/src/main/java/org/apache/camel/support/RouteWatcherReloadStrategy.java#L274 >> >> To me it looks like the warning "Routes with no id's detected"... is >> always printed if there are routes with custom ids: >> >> for (String id : ids) { >> Route route = getCamelContext().getRoute(id); >> if (route.isCustomId()) { >> sj.add(route.getEndpoint().getEndpointUri()); >> } >> } >> if (sj.length() > 0) { >> LOG.warn( >> "Routes with no id's detected. Its >> recommended to assign route id's to your routes so Camel can reload >> the routes correctly.\n Unassigned routes:\n {}", >> sj); >> } >> >> ma 26. jouluk. 2022 klo 15.30 Mikael Koskinen (mijap...@gmail.com) >> kirjoitti: >> > >> > Hey, >> > >> > Hmm, I'm not sure. The unit test you linked seems to use the "id" >> > field like I used when defining the route. But the assert uses >> > "routeId". For example the test: >> > >> > when: >> > loadRoutes ''' >> > - route: >> > id: demo-route <---- Here's the "id" field >> > def "load route inlined camelCase"() { >> > >> > But in the assert: >> > >> > context.routeDefinitions.size() == 1 >> > >> > with(context.routeDefinitions[0], RouteDefinition) { >> > routeId == 'demo-route' <----- Here's routeId instead of "id" >> > >> > But as I previously tested, Karavan uses "id". >> > >> > In the first message I posted the log seems to state that "id" is the >> > way to go as Camel reports when starting the route: >> > >> > 2022-12-26 11:28:42.504 INFO 79551 --- [ >> > main]e.camel.impl.engine.AbstractCamelContext : Started firstRoute >> > >> > Where "firstRoute" is the "id". But the problem is that when live >> > reloading happens, Camel reports that no id has been set. Even though >> > in the previous line it states that the route with id "firstRoute" has >> > been started. >> > >> > ma 26. jouluk. 2022 klo 14.58 Claus Ibsen (claus.ib...@gmail.com) >> kirjoitti: >> > > >> > > Hi >> > > >> > > See some unit tests >> > > >> https://github.com/apache/camel/blob/main/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesTest.groovy#L198 >> > > >> > > You can also use Apache Camel Karavan to design yaml routes as it >> builds >> > > the YAML correct >> > > >> > > >> > > >> > > On Mon, Dec 26, 2022 at 12:09 PM Mikael Koskinen <mijap...@gmail.com> >> wrote: >> > > >> > > > Thanks! I tried routeId and route-id but got the following error on >> both: >> > > > >> > > > Unsupported field: routeId >> > > > in file:timers.yaml, line 2, column 5: >> > > > routeId: firstRoute >> > > > ^ >> > > > >> > > > at >> > > > >> org.apache.camel.dsl.yaml.deserializers.RouteDefinitionDeserializer.setProperties(RouteDefinitionDeserializer.java:128) >> > > > at >> > > > >> org.apache.camel.dsl.yaml.deserializers.RouteDefinitionDeserializer.setProperties(RouteDefinitionDeserializer.java:33) >> > > > at >> > > > >> org.apache.camel.dsl.yaml.common.YamlDeserializerBase.construct(YamlDeserializerBase.java:65) >> > > > at >> > > > >> org.apache.camel.dsl.yaml.common.YamlDeserializationContext$2.construct(YamlDeserializationContext.java:215) >> > > > >> > > > This is the route: >> > > > >> > > > - route: >> > > > routeId: firstRoute >> > > > from: >> > > > uri: "timer:yaml" >> > > > parameters: >> > > > period: "2000" >> > > > steps: >> > > > - setBody: >> > > > constant: "Hello Camel from yaml timer 300" >> > > > - log: "${body}" >> > > > >> > > > If I use Karavan to set the ID of the route, it sets the "id" field: >> > > > >> > > > - route: >> > > > from: >> > > > uri: timer:yaml >> > > > steps: >> > > > - setBody: >> > > > expression: >> > > > constant: >> > > > expression: Hello Camel from yaml timer 300 >> > > > - log: >> > > > message: ${body} >> > > > parameters: >> > > > period: '2000' >> > > > id: routeIdFromKaravan >> > > > >> > > > >> > > > ma 26. jouluk. 2022 klo 12.02 Claus Ibsen (claus.ib...@gmail.com) >> > > > kirjoitti: >> > > > > >> > > > > And it can use camelCase too, so routeId or route-id are both >> possible. >> > > > > However routeId is recommended so you use same case as XML, Java >> DSL etc. >> > > > > >> > > > > On Mon, Dec 26, 2022 at 11:00 AM Claus Ibsen < >> claus.ib...@gmail.com> >> > > > wrote: >> > > > > >> > > > > > Hi >> > > > > > >> > > > > > Use route-id to set id for routes >> > > > > > >> > > > > > >> > > > > > On Mon, Dec 26, 2022 at 10:38 AM Mikael Koskinen < >> mijap...@gmail.com> >> > > > > > wrote: >> > > > > > >> > > > > >> Hi, >> > > > > >> >> > > > > >> I'm testing how the route reload works if one file has multiple >> > > > > >> routes. I've defined two routes in a single file and assigned >> ids to >> > > > > >> both: >> > > > > >> >> > > > > >> - route: >> > > > > >> id: firstRoute >> > > > > >> from: >> > > > > >> uri: "timer:yaml" >> > > > > >> parameters: >> > > > > >> period: "2000" >> > > > > >> steps: >> > > > > >> - setBody: >> > > > > >> constant: "Hello Camel from yaml timer 30" >> > > > > >> - log: "${body}" >> > > > > >> >> > > > > >> - route: >> > > > > >> id: secondRoute >> > > > > >> from: >> > > > > >> uri: "timer:yaml" >> > > > > >> parameters: >> > > > > >> period: "3000" >> > > > > >> steps: >> > > > > >> - setBody: >> > > > > >> constant: "Hello Camel from yaml timer this one" >> > > > > >> - log: "${body}" >> > > > > >> >> > > > > >> When I run the routes I can see the ids: >> > > > > >> >> > > > > >> 2022-12-26 11:28:42.504 INFO 79551 --- [ main] >> > > > > >> e.camel.impl.engine.AbstractCamelContext : Started >> firstRoute >> > > > > >> (timer://yaml) >> > > > > >> 2022-12-26 11:28:42.504 INFO 79551 --- [ main] >> > > > > >> e.camel.impl.engine.AbstractCamelContext : Started >> secondRoute >> > > > > >> (timer://yaml) >> > > > > >> >> > > > > >> Then I've enabled live reload using application.properties with >> > > > > >> camel.main.routes-reload-remove-all-routes set to false. >> Here's the >> > > > > >> full application.properties: >> > > > > >> >> > > > > >> # routes to load >> > > > > >> camel.main.routes-reload-enabled = true >> > > > > >> camel.main.routes-reload-directory = file:./ >> > > > > >> camel.main.routes-reload-pattern = *.yaml >> > > > > >> camel.main.routes-reload-remove-all-routes = false >> > > > > >> >> > > > > >> Now when I use Camel Jbang to run the routes: >> > > > > >> >> > > > > >> camel run timers.yaml >> > > > > >> >> > > > > >> I can see the route ids and the mention that live reload is >> enabled: >> > > > > >> >> > > > > >> 2022-12-26 11:32:03.051 INFO 79751 --- [ main] >> > > > > >> upport.FileWatcherResourceReloadStrategy : Live route reloading >> > > > > >> enabled (directory: .) >> > > > > >> 2022-12-26 11:32:03.073 INFO 79751 --- [ main] >> > > > > >> e.camel.impl.engine.AbstractCamelContext : Routes startup >> (started:2) >> > > > > >> 2022-12-26 11:32:03.073 INFO 79751 --- [ main] >> > > > > >> e.camel.impl.engine.AbstractCamelContext : Started >> firstRoute >> > > > > >> (timer://yaml) >> > > > > >> 2022-12-26 11:32:03.073 INFO 79751 --- [ main] >> > > > > >> e.camel.impl.engine.AbstractCamelContext : Started >> secondRoute >> > > > > >> (timer://yaml) >> > > > > >> >> > > > > >> But when I modify one of the routes in the timers.yaml, I get >> an >> > > > > >> warning about missing ids: >> > > > > >> >> > > > > >> 2022-12-26 11:33:48.522 INFO 79845 --- [rReloadStrategy] >> > > > > >> e.camel.impl.engine.AbstractCamelContext : Stopped firstRoute >> > > > > >> (timer://yaml) >> > > > > >> 2022-12-26 11:33:48.523 INFO 79845 --- [rReloadStrategy] >> > > > > >> e.camel.impl.engine.AbstractCamelContext : Shutdown firstRoute >> > > > > >> (timer://yaml) >> > > > > >> 2022-12-26 11:33:48.524 INFO 79845 --- [rReloadStrategy] >> > > > > >> e.camel.impl.engine.AbstractCamelContext : Stopped secondRoute >> > > > > >> (timer://yaml) >> > > > > >> 2022-12-26 11:33:48.524 INFO 79845 --- [rReloadStrategy] >> > > > > >> e.camel.impl.engine.AbstractCamelContext : Shutdown secondRoute >> > > > > >> (timer://yaml) >> > > > > >> 2022-12-26 11:33:48.537 INFO 79845 --- [rReloadStrategy] >> > > > > >> camel.support.RouteWatcherReloadStrategy : Routes reloaded >> summary >> > > > > >> (total:2 started:2) >> > > > > >> 2022-12-26 11:33:48.537 INFO 79845 --- [rReloadStrategy] >> > > > > >> camel.support.RouteWatcherReloadStrategy : Started >> firstRoute >> > > > > >> (timer://yaml) (source: timers.yaml:4) >> > > > > >> 2022-12-26 11:33:48.537 INFO 79845 --- [rReloadStrategy] >> > > > > >> camel.support.RouteWatcherReloadStrategy : Started >> secondRoute >> > > > > >> (timer://yaml) (source: timers.yaml:15) >> > > > > >> 2022-12-26 11:33:48.538 WARN 79845 --- [rReloadStrategy] >> > > > > >> camel.support.RouteWatcherReloadStrategy : Routes with no id's >> > > > > >> detected. Its recommended to assign route id's to your routes >> so Camel >> > > > > >> can reload the routes correctly. >> > > > > >> Unassigned routes: >> > > > > >> timer://yaml?period=2000 >> > > > > >> timer://yaml?period=3000 >> > > > > >> >> > > > > >> A bug? >> > > > > >> >> > > > > >> Best regards, >> > > > > >> Mikael >> > > > > >> >> > > > > > >> > > > > > >> > > > > > -- >> > > > > > Claus Ibsen >> > > > > > ----------------- >> > > > > > @davsclaus >> > > > > > Camel in Action 2: https://www.manning.com/ibsen2 >> > > > > > >> > > > > >> > > > > >> > > > > -- >> > > > > Claus Ibsen >> > > > > ----------------- >> > > > > @davsclaus >> > > > > Camel in Action 2: https://www.manning.com/ibsen2 >> > > > >> > > >> > > >> > > -- >> > > Claus Ibsen >> > > ----------------- >> > > @davsclaus >> > > Camel in Action 2: https://www.manning.com/ibsen2 >> > > > -- > Claus Ibsen > ----------------- > @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 > -- Claus Ibsen ----------------- @davsclaus Camel in Action 2: https://www.manning.com/ibsen2