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 2025/08/28 08:57:00 UTC
[jira] [Commented] (CAMEL-22378) camel-core - Route installation status report
[ https://issues.apache.org/jira/browse/CAMEL-22378?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18016733#comment-18016733 ]
Claus Ibsen commented on CAMEL-22378:
-------------------------------------
There is a bit of synergy with the route reloader used for dev-mode, that does a summary. With this in mind there is a bit of existing logic and to some extend a tiny reason for considering some improvements about a status summary API when reloading routes / starting routes.
> camel-core - Route installation status report
> ---------------------------------------------
>
> Key: CAMEL-22378
> URL: https://issues.apache.org/jira/browse/CAMEL-22378
> Project: Camel
> Issue Type: Wish
> Components: came-core
> Affects Versions: 4.14.0
> Reporter: Raymond
> Priority: Major
>
> This ticket is basically a wish/idea to better information after installation of routes or a route group.
> The routeController actions, such as start/stop/suspend/resume currently are void and don't return the status/result of the action. Sometimes however one would like to have more information.
> There is the {{[hasUnhealthyRoutes|https://www.javadoc.io/static/org.apache.camel/camel-api/4.14.0/org/apache/camel/spi/RouteController.html#hasUnhealthyRoutes()]()}} method and {{getRouteStatus(routeId). But hasUnhealthyRoutes only return a boolean, while the getRouteStatus }}returns a {{ServiceStatus}} enum ({{{}Started{}}}, {{{}Starting{}}}, {{{}Stopped{}}}, {{{}Failed{}}}, etc.).
> Of course there are indirect ways to get more information such as EventNotifier or RoutePolicy, but I think the routeController could provide an easier access to such information.
> I would like to have a report with information like:
> 1. Route ID
> 2. Group
> 3. From uri
> 4. Time (Either a unix timestamp or an ISO 8601 date)
> 5. ServiceStatus
> 6. Unhealhy (true/false)
> 7. Error message
> A method such as "getInstallationReport("routeId")" could return:
> {
> "routeId": "123",
> "group": "order",
> "time": "2025-08-27T09:04:32.456",
> "fromUri": "sql:somesql",
> "unhealthy": true,
> "status": "failed",
> "error": "Database error"
> }
> For a group or all routes it can be put in a JSONArray. For example
> getInstallationReportByGroup("myGroup")
> [{
> "routeId": "123",
> "group": "order",
> "time": "2025-08-27T09:04:32.456",
> "fromUri": "sql:somesql",
> "unhealthy": true,
> "status": "failed",
> "error": "Database error"
> },
> {
> "routeId": "456",
> "group": "order",
> "time": "2025-08-27T09:04:34.362",
> "fromUri": "direct:validate",
> "unhealthy": false,
> "status": "started",
> "error": ""
> }]
> This can be either per route or route group. To give an idea, here is an example installation report that is returned by Assimbly (a flow in this case is group, while step a route):
> {code:java}
> {"flow": {
> "stepsLoaded": {
> "total": 5,
> "successfully": 5,
> "failed": 0
> },
> "name": "686e726ecd40200007000004",
> "id": "686e726ecd40200007000004",
> "time": "1535 milliseconds",
> "event": "start",
> "message": "Started flow successfully",
> "version": "",
> "steps": [
> {
> "id": "0",
> "type": "error",
> "uri": "",
> "status": "success"
> },
> {
> "id": "94bd94b8efa7",
> "type": "routeTemplate",
> "uri": "texttobase64",
> "status": "success"
> },
> {
> "id": "886fd5a7817d",
> "type": "routeTemplate",
> "uri": "setbody?language=simple&expression=1234",
> "status": "success"
> },
> {
> "id": "706c927a3480",
> "type": "routeTemplate",
> "uri": "log?showBody=true&showException=false&showHeaders=false",
> "status": "success"
> },
> {
> "id": "22fe3e66c3cc",
> "type": "routeTemplate",
> "uri": "https://0.0.0.0:9001/test/inbound_http/_new/textToBase64",
> "status": "success"
> }
> ]
> }} {code}
>
> I guess such a report would be handy whether you start route or route group through the routecontroller, routeloader or context.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)