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 //