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

Reply via email to