On Thu, Oct 19, 2023 at 6:13 PM Steffen Salewski <steffen.salewski@ziscom.solutions> wrote:
> Hello Pasquale , > > thank you very much! Setting the ID on the correct node let the route id > having the correct value now. It just works! > > Maybe the example for YAML can be added to the FAQ at > https://camel.apache.org/manual/faq/how-do-i-name-my-routes.html, as this > was the source of my information!? > > You are welcome to contribute, click "edit this page" and add the YAML example and submit as PR. > Best regards, > Steffen > > > ________________________________ > Von: Pasquale Congiusti <pasquale.congiu...@gmail.com> > Gesendet: Donnerstag, 19. Oktober 2023 13:10 > An: users@camel.apache.org <users@camel.apache.org> > Betreff: Re: YAML DSL route loader seems to ignore "id" attribute > > Hello Steffen, and welcome to Apache Camel :) > > The problem you're facing is related to the way you're coding the yaml as > the ID is a configuration you can override for the route (as you can also > see in the xml dsl). Try this one instead: > > - route: > id: myRoute2 > from: > uri: "timer:yaml" > parameters: > period: "1000" > steps: > - setBody: > simple: "Hello Camel from ${routeId}" > - log: "${body}" > > $ camel run test.yaml > 2023-10-19 13:07:17.876 INFO 439921 --- [ main] > org.apache.camel.main.MainSupport : Apache Camel (JBang) 4.0.0 is > starting > 2023-10-19 13:07:18.056 INFO 439921 --- [ main] > org.apache.camel.main.MainSupport : Using Java 17.0.7 with PID 439921. > Started by squake in /home/squake/workspace/fuse-camel-k-image > 2023-10-19 13:07:18.830 INFO 439921 --- [ main] > mel.cli.connector.LocalCliConnector : Camel CLI enabled (local) > 2023-10-19 13:07:18.909 INFO 439921 --- [ main] > el.impl.engine.AbstractCamelContext : Apache Camel 4.0.0 (test) is starting > 2023-10-19 13:07:19.077 INFO 439921 --- [ main] > el.impl.engine.AbstractCamelContext : Routes startup (started:1) > 2023-10-19 13:07:19.077 INFO 439921 --- [ main] > el.impl.engine.AbstractCamelContext : Started myRoute2 (timer://yaml) > 2023-10-19 13:07:19.078 INFO 439921 --- [ main] > el.impl.engine.AbstractCamelContext : Apache Camel 4.0.0 (test) started in > 168ms (build:0ms init:0ms start:168ms) > 2023-10-19 13:07:20.101 INFO 439921 --- [ - timer://yaml] test.yaml:13 > : Hello Camel from myRoute2 > > Cheers, > Pasquale. > > On Thu, Oct 19, 2023 at 11:50 AM Steffen Salewski > <steffen.salewski@ziscom.solutions> wrote: > > > Hello, > > > > first of all: This is my very first mail in this mailing list, and I am > > still learning the potential of Camel, so please give me any advise if I > > can make better 🙂 > > > > Summary: > > I want to manage routes at runtime, and for this it is essential that I > > can identify a rule by its ID so that I am able to modify or remove it. I > > choosed YAML as my preferred DSL, but it seems that the ID attribute is > not > > regarded and the route still gets its generic name instead. This seems > like > > a bug for me, as with XML, the ID is used as expected. So before I fill > in > > a bug report I ask (as requested) here if I am doing anything wrong or if > > you think that this is really a bug. > > > > Test case: > > A very simple Spring-Boot/Camel project: > > > > pom.xml: > > <?xml version="1.0" encoding="UTF-8"?> > > <project xmlns="http://maven.apache.org/POM/4.0.0" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > > http://maven.apache.org/xsd/maven-4.0.0.xsd"> > > <modelVersion>4.0.0</modelVersion> > > > > <groupId>my.camel.testing</groupId> > > <artifactId>camle-testing</artifactId> > > <version>1.0-SNAPSHOT</version> > > > > <properties> > > <maven.compiler.source>17</maven.compiler.source> > > <maven.compiler.target>17</maven.compiler.target> > > > <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> > > > > <camel.version>4.0.1</camel.version> > > </properties> > > > > <dependencies> > > <dependency> > > <groupId>org.apache.camel.springboot</groupId> > > <artifactId>camel-spring-boot</artifactId> > > <version>${camel.version}</version> > > </dependency> > > <dependency> > > <groupId>org.apache.camel.springboot</groupId> > > <artifactId>camel-spring-boot-starter</artifactId> > > <version>${camel.version}</version> > > </dependency> > > <dependency> > > <groupId>org.apache.camel</groupId> > > <artifactId>camel-xml-io</artifactId> > > <version>${camel.version}</version> > > </dependency> > > <dependency> > > <groupId>org.apache.camel</groupId> > > <artifactId>camel-xml-io-dsl</artifactId> > > <version>${camel.version}</version> > > </dependency> > > <dependency> > > <groupId>org.apache.camel</groupId> > > <artifactId>camel-yaml-dsl</artifactId> > > <version>${camel.version}</version> > > </dependency> > > </dependencies> > > </project> > > > > Application.java: > > @SpringBootApplication > > public class Application { > > public static void main(String[] args) { > > SpringApplication.run(Application.class, args); > > } > > } > > > > Routes (placed in $PROJECT_HOME/camel/, autodetected by > > camel-spring-boot-starter): > > myroute1.xml: > > <routes xmlns="http://camel.apache.org/schema/spring"> > > <route id="myRoute1"> > > <from uri="timer:tick"/> > > <setBody> > > <constant>Hello Camel!</constant> > > </setBody> > > <to uri="log:info1"/> > > </route> > > </routes> > > > > myroute2.yaml: > > - from: > > id: myRoute2 > > uri: timer:tick > > steps: > > - setBody: > > constant: Hello Camel! > > - to: > > uri: log:info2 > > > > I understand that both routes should be doing the same thing and the only > > difference is the ID. > > > > When I start the application, the log shows this: > > ... > > 023-10-19T10:41:34.142+02:00 INFO 17160 --- [ main] > > o.a.c.impl.engine.AbstractCamelContext : Routes startup (started:2) > > 2023-10-19T10:41:34.142+02:00 INFO 17160 --- [ main] > > o.a.c.impl.engine.AbstractCamelContext : Started myRoute1 > > (timer://tick) > > 2023-10-19T10:41:34.142+02:00 INFO 17160 --- [ main] > > o.a.c.impl.engine.AbstractCamelContext : Started route1 > (timer://tick) > > 2023-10-19T10:41:34.142+02:00 INFO 17160 --- [ main] > > o.a.c.impl.engine.AbstractCamelContext : Apache Camel 4.0.1 (camel-1) > > started in 15ms (build:0ms init:0ms start:15ms) > > ... > > > > Note that the XML route was loaded using the correct ID (myRoute1), but > > the YAML is using a generic ID (route1). I would expect that the output > is: > > Routes startup (started:2) > > Started myRoute1 (timer://tick) > > Started myRoute2 (timer://tick) > > Apache Camel 4.0.1 (camel-1) started in ... > > > > Tested and verified with Camel v4.0.1 and v4.1.0 > > > > So, it seems like a bug in the YAML route builder. What do you think? > > > > Thank you & kind regards, > > Steffen > > > > // added to skip company footer: 27948 // > -- Claus Ibsen ----------------- @davsclaus Camel in Action 2: https://www.manning.com/ibsen2