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

Claus Ibsen updated CAMEL-23656:
--------------------------------
    Description: 
Camel has the route-structure dev console that shows the internal structure of 
individual routes (the EIP tree). However, there is no built-in feature to show 
the inter-route topology — how routes connect to each other through shared 
endpoints.

For example:
- route1 sends to direct:process, which is consumed by route2
- route2 sends to kafka:cheese, which is also consumed by route3
- route4 starts from timer:heartbeat (a trigger entry point with no inbound 
connection)
- a route may even call itself via a content-based router branch (cycles)

This adds a RouteTopologyService as an SPI interface in camel-api with an 
implementation in camel-core-engine. The service computes the route dependency 
graph by analyzing route definitions and matching endpoints across routes.

Endpoint matching uses scheme:context-path (stripping query parameters), so 
kafka:cheese?brokers=a and kafka:cheese?groupId=b are considered the same 
destination.

Connection types:
- Internal: direct, seda — route-to-route links via matching name
- External: kafka, jms, and other remote components — shared endpoint links
- Triggers: timer, quartz, cron, scheduler — entry points with no inbound edges

The service is accessible from:
- Java API (via CamelContext plugin)
- Dev console (new route-topology console)
- JMX (via ManagedCamelContext)
- Camel JBang CLI command (text-based topology summary, non-diagram view)

Follow-up work (separate tickets):
- REST DSL to direct route linking
- Route templates and kamelets
- Enhanced component metadata for query-parameter-based destination matching
- Integration with camel-diagram renderer

  was:
Camel has the route-structure dev console that shows the internal structure of 
individual routes (the EIP tree). However, there is no built-in feature to show 
the inter-route topology — how routes connect to each other through shared 
endpoints.

For example:
- route1 sends to direct:process, which is consumed by route2
- route2 sends to kafka:cheese, which is also consumed by route3
- route4 starts from timer:heartbeat (a trigger entry point with no inbound 
connection)
- a route may even call itself via a content-based router branch (cycles)

This adds a RouteTopologyService as an SPI interface in camel-api with an 
implementation in camel-core-engine. The service computes the route dependency 
graph by analyzing route definitions and matching endpoints across routes.

Endpoint matching uses scheme:context-path (stripping query parameters), so 
kafka:cheese?brokers=a and kafka:cheese?groupId=b are considered the same 
destination.

Connection types:
- Internal: direct, seda — route-to-route links via matching name
- External: kafka, jms, and other remote components — shared endpoint links
- Triggers: timer, quartz, cron, scheduler — entry points with no inbound edges

The service is accessible from:
- Java API (via CamelContext plugin)
- Dev console (new route-topology console)
- JMX (via ManagedCamelContext)

Follow-up work (separate tickets):
- REST DSL to direct route linking
- Route templates and kamelets
- Enhanced component metadata for query-parameter-based destination matching
- Integration with camel-diagram renderer


> Add route topology service to compute inter-route relationships
> ---------------------------------------------------------------
>
>                 Key: CAMEL-23656
>                 URL: https://issues.apache.org/jira/browse/CAMEL-23656
>             Project: Camel
>          Issue Type: New Feature
>          Components: camel-core
>            Reporter: Claus Ibsen
>            Priority: Major
>
> Camel has the route-structure dev console that shows the internal structure 
> of individual routes (the EIP tree). However, there is no built-in feature to 
> show the inter-route topology — how routes connect to each other through 
> shared endpoints.
> For example:
> - route1 sends to direct:process, which is consumed by route2
> - route2 sends to kafka:cheese, which is also consumed by route3
> - route4 starts from timer:heartbeat (a trigger entry point with no inbound 
> connection)
> - a route may even call itself via a content-based router branch (cycles)
> This adds a RouteTopologyService as an SPI interface in camel-api with an 
> implementation in camel-core-engine. The service computes the route 
> dependency graph by analyzing route definitions and matching endpoints across 
> routes.
> Endpoint matching uses scheme:context-path (stripping query parameters), so 
> kafka:cheese?brokers=a and kafka:cheese?groupId=b are considered the same 
> destination.
> Connection types:
> - Internal: direct, seda — route-to-route links via matching name
> - External: kafka, jms, and other remote components — shared endpoint links
> - Triggers: timer, quartz, cron, scheduler — entry points with no inbound 
> edges
> The service is accessible from:
> - Java API (via CamelContext plugin)
> - Dev console (new route-topology console)
> - JMX (via ManagedCamelContext)
> - Camel JBang CLI command (text-based topology summary, non-diagram view)
> Follow-up work (separate tickets):
> - REST DSL to direct route linking
> - Route templates and kamelets
> - Enhanced component metadata for query-parameter-based destination matching
> - Integration with camel-diagram renderer



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

Reply via email to