Claus Ibsen created CAMEL-23657:
-----------------------------------
Summary: Enhance component metadata to mark destination-identity
query parameters for topology matching
Key: CAMEL-23657
URL: https://issues.apache.org/jira/browse/CAMEL-23657
Project: Camel
Issue Type: Improvement
Components: camel-core
Reporter: Claus Ibsen
The route topology service (CAMEL-23656) matches endpoints across routes using
scheme:context-path, stripping all query parameters. This works for the vast
majority of components (88%) where the destination identity (queue name, topic
name, bucket, etc.) is in the URI context path.
However, some components encode the destination identity in a required query
parameter rather than the path. For these components, two URIs with the same
scheme:context-path but different query parameter values actually point to
different destinations, and topology matching would incorrectly consider them
the same.
This ticket proposes enhancing the component metadata (the component JSON
schema) to allow marking specific query parameters as "destination identity"
parameters. The route topology service can then include those marked parameters
when building canonical URIs for matching.
Components where destination is in a query parameter (not the path):
||Scheme||Path contains||Destination query param||
|couchbase|host:port|bucket (required)|
|mongodb|connection bean ref|database + collection|
|mongodb-gridfs|connection bean ref|database (required)|
|spring-rabbitmq|exchange name|routingKey + queues|
|dapr|operation type|topic|
|hwcloud-obs|operation type|bucketName|
|iggy|topic name|streamName|
Additionally, there are ~12 components (kubernetes-*, web3j) where the path
identifies the server/cluster rather than the destination, with namespace or
contract address in query parameters.
And ~19 components (azure-servicebus, azure-eventhubs, azure-cosmosdb, knative,
cql, etc.) where path parameters are technically optional but usually provided
by users.
This is a follow-up to CAMEL-23656.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)