You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/09/29 09:13:00 UTC

[jira] [Updated] (CAMEL-24955) camel-yaml-dsl-validator: report a direct: or seda: endpoint that no route consumes

     [ https://issues.apache.org/jira/browse/CAMEL-24955?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claus Ibsen updated CAMEL-24955:
--------------------------------
    Fix Version/s: 4.23.0

> camel-yaml-dsl-validator: report a direct: or seda: endpoint that no route consumes
> -----------------------------------------------------------------------------------
>
>                 Key: CAMEL-24955
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24955
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-yaml-dsl
>            Reporter: Claus Ibsen
>            Assignee: Adriano Machado
>            Priority: Major
>             Fix For: 4.23.0
>
>
> A message sent to a route that is not there is decidable from the source, and today it is only found when the application starts - or not at all.
> {code:yaml}
> - route:
>     from:
>       uri: timer:tick
>       steps:
>         - to:
>             uri: direct:lookup      # and no route consumes direct:lookup
> {code}
> With {{direct:}} the route fails to start - _No consumers available on endpoint direct://lookup_ - and {{DiagnoseData}} explains it after the fact. With {{seda:}} nothing fails at all: the message is queued and nothing reads it.
> The other direction is the same question: a {{direct:}} route that nothing calls. That is what a whole-file rewrite leaves behind, and the file still validates.
> h3. What it needs
> {{RouteGraph}} from CAMEL-24844 already reads the routes and their endpoints from the source, in both spellings ({{direct:lookup}} and {{uri: direct}} with {{parameters: {name: lookup}}}). The check itself is small; what it needs is the rest of the project, because the routes of an application are spread over files and a file on its own cannot answer either question. The directory-aware checks in {{SourceValidator}} ({{validateResourceRefs}}, {{validateYamlBeanRefs}}) are the pattern: scan the sibling route files - and the Java ones, for {{from("direct:x")}} - and pass what they consume.
> Without a directory the check says nothing.
> h3. State
> Written and tested against CAMEL-24844's graph - six tests covering the missing consumer, another file consuming it, an unknown directory, the same file, the seda wording and an external endpoint, which is not its business. Held back from https://github.com/apache/camel/pull/26800 because an unwired check is dead code; it lands with the sibling scan.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)