[ 
https://issues.apache.org/jira/browse/CAMEL-26716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18141845#comment-18141845
 ] 

Claus Ibsen commented on CAMEL-26716:
-------------------------------------

More hints from the chaos explorations of CAMEL-26760 on the chaos example 
(apache/camel-jbang-examples#134). Two can come straight from a table that 
camel-chaos already has: the chaos facts as Good to know hints, as in the 
comments above.

*When it fails: an input that does not keep a failed message*
* A Kafka input without {{breakOnFirstError=true}}: a message whose exchange 
fails is logged, the consumer commits and goes on, so it is gone. In the 
example, route {{refunds}} reads Kafka with the default error handler; refunds 
failed on a 503 from payment in runs 3 and 4, while route {{orders}} recovered 
from the same fault with its dead letter channel. Hint: "a refund that fails is 
logged and skipped: {{breakOnFirstError=true}} reads it again, or a dead letter 
channel keeps it".
* The same table covers JMS (kept with {{transacted=true}}, or with 
{{acknowledgementModeName=CLIENT_ACKNOWLEDGE}} and {{asyncConsumer=false}}) and 
file inputs. It is {{ChaosConsumers}} in camel-chaos, which decides whether the 
chaos report counts a failure as "kept by the consumer".

*What is read again: a poison file*
* A file (or ftp, sftp) input without {{moveFailed}}: the rollback leaves a 
failed file where it is, so it is read again on every poll, for ever. It is the 
opposite of the hint above: a message that never goes away, instead of one that 
is lost. Same table.

*When a service is slow* (a new group)
* A route started by a timer that calls out and waits does not start the next 
exchange until the call is done. In run 6, route {{orders}} (a timer every 
second, then an HTTP call to payment) made 44 orders in 46 s, and 31 in the 
same time while payment timed out after 5 s. For a timer that may be fine; for 
a Kafka or JMS input it is lag. It pairs with the fact "an HTTP call without a 
circuit breaker" that {{chaos-suggest}} already uses.

*Already in the list, now with evidence*
* *Twice or out of order*: {{refunds}} reads Kafka (at least once) and calls 
payment without an idempotent consumer. In run 3 a {{duplicate}} rule sent 8 
payments twice, and all went through. CAMEL-26791 (an expectation for 
duplicates) is the chaos side of the same gap.
* *When it fails*, for an HTTP server: route {{payment}} is {{platform-http}} 
with {{noErrorHandler}}, so a failure goes back to the HTTP caller as an error 
(run 5, experiment 9).

_Claude Code on behalf of Claus Ibsen_

> camel-jbang - Good to know: hints about an integration from one shared rule 
> set (About screen, security scan, Doctor)
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26716
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26716
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-jbang
>            Reporter: Claus Ibsen
>            Priority: Minor
>             Fix For: 4.24.0
>
>
> The About screen of the TUI (CAMEL-26700) should end with *Good to know*: a 
> few lines, each answering one question a newcomer to an integration has, from 
> the route model, saying what happens (a hint, not a fix):
> * *When it fails*: per entry point, retried N times then the dead letter 
> channel, returned to the HTTP caller as 500, or logged and gone.
> * *What is dropped*: a filter, a choice without otherwise, the duplicates an 
> idempotent consumer skips.
> * *What does not wait*: a wire tap, a seda: hand-off, inOnly; a failure there 
> is not seen by the caller.
> * *What a restart forgets*: an idempotent or aggregation repository in memory.
> * *Twice or out of order*: an input that redelivers (Kafka, JMS) before a 
> call out without an idempotent consumer; parallel processing or concurrent 
> consumers.
> * *What is exposed or insecure*: a call to another host over a plain 
> transport (http:, ftp:, smtp:, Kafka PLAINTEXT) where a secure one exists; an 
> option the catalog marks insecure set to its insecure value (security = 
> "insecure:ssl", "insecure:serialization", "insecure:dev", such as 
> trustAllCertificates=true); an option marked secret written as plain text 
> instead of a {{placeholder}} or a vault; an HTTP server without 
> authentication on all interfaces. A plain transport to localhost is no hint.
> The hints should not be a set picked while building the screen. They belong 
> to one curated set of rules that more tools share, kept in camel-jbang-core:
> * today's ProjectOverview findings,
> * the camel_security_scan and harden tools of camel-jbang-mcp (their rules 
> move from camel-jbang-mcp to camel-jbang-core, so the screen and the tools 
> agree),
> * the Doctor,
> * the option metadata of the catalog (secret, security = "insecure:*").
> Then the same hints are in the About screen, in camel get about (CAMEL-26700, 
> stage 5) and for an AI over MCP.
> To be talked over before it is built (decided on the walk of the About 
> screen, 7 Nov 2026). Design: 
> https://claude.ai/artifact/2H927wodRp3FAy1BbDbw3P (section "For you to 
> decide").
> _Claude Code on behalf of Claus Ibsen_



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to