Now with this fix, you can have "transacted()" to run with quarkus and springboot runtime like
camel run foo.java --runtime=quarkus camel run foo.java --runtime=spring-boot --deps=dev.snowdrop:narayana-spring-boot-starter:3.2.0 On Mon, Aug 26, 2024 at 10:38 PM Zheng Feng <zf...@redhat.com> wrote: > https://github.com/apache/camel/pull/15318 > > On Mon, Aug 26, 2024 at 10:31 PM Zheng Feng <zf...@redhat.com> wrote: > >> I think runQuarkus and runSpringBoot have to runExport at first to detect >> the dependencies. So in runExport which is running in a plain camel, there >> is no support for TransactionPolicy out of box. Since we run it only to >> detect the deps, it could be good to provide a simple dummy >> TransactionPolicy. I will prepare a PR soon. >> >> Thanks Claus again for your nice hints. >> >> On Mon, Aug 26, 2024 at 3:58 PM Claus Ibsen <claus.ib...@gmail.com> >> wrote: >> >>> On Mon, Aug 26, 2024 at 9:39 AM Zheng Feng <zf...@redhat.com> wrote: >>> >>> > OK, I will keep investigating. So for CAMEL-21117, I could add a >>> similar >>> > class like CircuitBreakerDownloader.java to check >>> TransactionDefinition and >>> > add camel-jta in the downloader? >>> > >>> > >>> Yes, that ought to do it. >>> >>> >>> >>> >>> > On Mon, Aug 26, 2024 at 3:33 PM Claus Ibsen <claus.ib...@gmail.com> >>> wrote: >>> > >>> > > On Mon, Aug 26, 2024 at 9:24 AM Zheng Feng <zf...@redhat.com> wrote: >>> > > >>> > > > On Mon, Aug 26, 2024 at 3:09 PM Claus Ibsen <claus.ib...@gmail.com >>> > >>> > > wrote: >>> > > > >>> > > > > On Mon, Aug 26, 2024 at 8:56 AM Zheng Feng <zf...@redhat.com> >>> wrote: >>> > > > > >>> > > > > > Thanks Claus- Hmm, but it should work with quarkus runtime, >>> right? >>> > > > > > >>> > > > > > I just removed "transacted()" in foo.java and export it to a >>> > quarkus >>> > > > > > project by using >>> > > > > > "camel export foo.java --runtime=quarkus >>> > --gav=org.acme:example:0.0.1 >>> > > > > > --deps=camel-jta" >>> > > > > > >>> > > > > > After that, I added "transacted()" back in the foo.java and it >>> > works >>> > > > fine >>> > > > > > with "./mvnw quarkus:dev". So is it possible to detect >>> transacted() >>> > > dsl >>> > > > > and >>> > > > > > add camel-jta automatically? and run it with quarkus runtime? >>> > > > > > >>> > > > > > >>> > > > > No it should not magic run in another runtime: camel run is pure >>> > Camel >>> > > > > only. >>> > > > > >>> > > > I'm a little bit confuse, But there is a "--runtime" option for the >>> > camel >>> > > > run command? >>> > > > >>> > > > >>> > > If you do NOT specify runtime then its pure Camel. But of course if >>> you >>> > > explicit say runtime=quarkus, then it runs inside Quarkus. >>> > > >>> > > >>> > > >>> > > > > >>> > > > > Yes transacted DSL can be detected and camel-jta automatic added >>> as >>> > > > > dependency. >>> > > > > You are welcome to create a JIRA about this and implement this. >>> See >>> > how >>> > > > the >>> > > > > circuit breakers is detected. >>> > > > > >>> > > > >>> > > > OK, https://issues.apache.org/jira/browse/CAMEL-21117 is created >>> and >>> > > > assigned to me. >>> > > > >>> > > > > >>> > > > > >>> > > > > >>> > > > > >>> > > > > >>> > > > > > On Mon, Aug 26, 2024 at 2:41 PM Claus Ibsen < >>> claus.ib...@gmail.com >>> > > >>> > > > > wrote: >>> > > > > > >>> > > > > > > Hi >>> > > > > > > >>> > > > > > > You need to setup all that JTA transaction stuff. >>> > > > > > > jbang is not support doing this out of the box. >>> > > > > > > >>> > > > > > > >>> > > > > > > On Mon, Aug 26, 2024 at 8:01 AM Zheng Feng <zf...@redhat.com >>> > >>> > > wrote: >>> > > > > > > >>> > > > > > > > Hi, >>> > > > > > > > >>> > > > > > > > I add "transacted()" in the foo.java like >>> > > > > > > > >>> > > > > > > > public class foo extends RouteBuilder { >>> > > > > > > > >>> > > > > > > > @Override >>> > > > > > > > public void configure() throws Exception { >>> > > > > > > > from("timer:java?period=1000") >>> > > > > > > > .transacted() >>> > > > > > > > .setBody() >>> > > > > > > > .simple("Hello Camel from ${routeId}") >>> > > > > > > > .log("${body}"); >>> > > > > > > > } >>> > > > > > > > } >>> > > > > > > > >>> > > > > > > > But it is failed with running by "camel run foo.java" >>> > > > > > > > >>> > > > > > > > org.apache.camel.FailedToCreateRouteException: Failed to >>> create >>> > > > route >>> > > > > > > > route1 at: >>> Transacted <<< in route: >>> > > > > > > > Route(route1)[From[timer:java?period=1000] -> [Transacted]] >>> > > because >>> > > > > of >>> > > > > > > > policy must be specified on: >>> > > > > > > > org.apache.camel.reifier.TransactedReifier@6b2dd3df >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:235) >>> > > > > > > > at >>> > > > > > > >>> > > > >>> org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:86) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:720) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:587) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2390) >>> > > > > > > > at >>> > > > > > >>> > > >>> org.apache.camel.support.service.BaseService.init(BaseService.java:78) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2024) >>> > > > > > > > at >>> > > > > > > >>> > > > > >>> > > >>> org.apache.camel.support.service.BaseService.start(BaseService.java:105) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2043) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:211) >>> > > > > > > > at >>> > > org.apache.camel.main.KameletMain.doStart(KameletMain.java:364) >>> > > > > > > > at >>> > > > > > > >>> > > > > >>> > > >>> org.apache.camel.support.service.BaseService.start(BaseService.java:113) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.dsl.jbang.core.commands.Run.runKameletMain(Run.java:1336) >>> > > > > > > > at >>> > org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:873) >>> > > > > > > > at >>> > > > org.apache.camel.dsl.jbang.core.commands.Run.doCall(Run.java:320) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:71) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:37) >>> > > > > > > > at >>> picocli.CommandLine.executeUserObject(CommandLine.java:2045) >>> > > > > > > > at picocli.CommandLine.access$1500(CommandLine.java:148) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465) >>> > > > > > > > at >>> picocli.CommandLine$RunLast.handle(CommandLine.java:2457) >>> > > > > > > > at >>> picocli.CommandLine$RunLast.handle(CommandLine.java:2419) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277) >>> > > > > > > > at >>> picocli.CommandLine$RunLast.execute(CommandLine.java:2421) >>> > > > > > > > at picocli.CommandLine.execute(CommandLine.java:2174) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:168) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:61) >>> > > > > > > > at main.CamelJBang.main(CamelJBang.java:36) >>> > > > > > > > Caused by: java.lang.IllegalArgumentException: policy must >>> be >>> > > > > specified >>> > > > > > > on: >>> > > > > > > > org.apache.camel.reifier.TransactedReifier@6b2dd3df >>> > > > > > > > at >>> > > > org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:188) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.reifier.TransactedReifier.createProcessor(TransactedReifier.java:41) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:886) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:622) >>> > > > > > > > at >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:231) >>> > > > > > > > ... 28 more >>> > > > > > > > >>> > > > > > > > I used the Camel JBang 4.7.0 and also try to run with >>> > > > > > "--deps=camel-jta" >>> > > > > > > > and "--runtime=quarkus", but none of them worked. Is there >>> > > > anything >>> > > > > I >>> > > > > > > > missed? >>> > > > > > > > >>> > > > > > > >>> > > > > > > >>> > > > > > > -- >>> > > > > > > Claus Ibsen >>> > > > > > > ----------------- >>> > > > > > > @davsclaus >>> > > > > > > Camel in Action 2: https://www.manning.com/ibsen2 >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > > >>> > > > > -- >>> > > > > Claus Ibsen >>> > > > > ----------------- >>> > > > > @davsclaus >>> > > > > Camel in Action 2: https://www.manning.com/ibsen2 >>> > > > > >>> > > > >>> > > >>> > > >>> > > -- >>> > > Claus Ibsen >>> > > ----------------- >>> > > @davsclaus >>> > > Camel in Action 2: https://www.manning.com/ibsen2 >>> > > >>> > >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> @davsclaus >>> Camel in Action 2: https://www.manning.com/ibsen2 >>> >>