You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by ski n <ra...@gmail.com> on 2022/09/06 14:46:06 UTC
Types in routeTemplates
I like to create a route template with a parameter of a specific Java type.
For example the following routetemplate:
routeTemplate("mypollenrich")
.templateParameter("timeout","5000")
.from("direct:in")
.pollEnrich("myuri", "{{timeout}}","CurrentEnrichStrategy")
.to("direct:out");
The above routetemplate is not accepted because the parameter "{{timeout}}"
is a String, while a long is expected. Is it possible to pass the parameter
as a long (and in general just any Java type)?
I now tried to parse the String as Long like this:
routeTemplate("mypollenrich")
.templateParameter("timeout","5000")
.from("direct:in")
.pollEnrich("myuri",
Long.parseLong("{{timeout}}"),"CurrentEnrichStrategy")
.to("direct:out");
But doesn't seem allowed. What is the correct way of doing it?
Raymond
Re: Types in routeTemplates
Posted by Claus Ibsen <cl...@gmail.com>.
Hi
Yes, it's intended to have string types that accept property placeholders.
But sometimes you need to add them manually.
A long term goal is to generate all DSLs from a canonical DSL meta-model,
then we can ensure a consistent way for all programming languages, eg Java,
Kotlin, Groovy etc.
But that is Camel 5 or beyond.
On Wed, Sep 7, 2022 at 9:33 AM ski n <ra...@gmail.com> wrote:
> That's nice.
>
> I already found out you can write for example the throttle as:
>
> .throttle(1).timePeriodMillis(1000)
>
> Thus with two longs as input, but it's also possible:
>
>
> .throttle(constant("{{maximumrequestcount}}")).timePeriodMillis("{{timeperiod}}")
>
> In the second case the first parameter is an expression and the second
> parameter a string.
>
> It's thus flexible that both our possible. Is this now a standard that
> object types will also become available as string or expression in the Java
> DSL?
>
> Raymond
>
> On Tue, Sep 6, 2022 at 6:29 PM Claus Ibsen <cl...@gmail.com> wrote:
>
> > Ah yeah we need a timeout that takes a string value
> >
> > .pollEnrich("myUrl).timeout("xxx")....
> >
> > I just added that to 3.19 and 3.18.x
> >
> >
> >
> > On Tue, Sep 6, 2022 at 4:46 PM ski n <ra...@gmail.com> wrote:
> >
> > > I like to create a route template with a parameter of a specific Java
> > type.
> > >
> > > For example the following routetemplate:
> > >
> > > routeTemplate("mypollenrich")
> > > .templateParameter("timeout","5000")
> > > .from("direct:in")
> > > .pollEnrich("myuri", "{{timeout}}","CurrentEnrichStrategy")
> > > .to("direct:out");
> > >
> > > The above routetemplate is not accepted because the parameter
> > "{{timeout}}"
> > > is a String, while a long is expected. Is it possible to pass the
> > parameter
> > > as a long (and in general just any Java type)?
> > >
> > > I now tried to parse the String as Long like this:
> > >
> > > routeTemplate("mypollenrich")
> > > .templateParameter("timeout","5000")
> > > .from("direct:in")
> > > .pollEnrich("myuri",
> > > Long.parseLong("{{timeout}}"),"CurrentEnrichStrategy")
> > > .to("direct:out");
> > >
> > > But doesn't seem allowed. What is the correct way of doing it?
> > >
> > > Raymond
> > >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2
> >
>
--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2
Re: Types in routeTemplates
Posted by ski n <ra...@gmail.com>.
That's nice.
I already found out you can write for example the throttle as:
.throttle(1).timePeriodMillis(1000)
Thus with two longs as input, but it's also possible:
.throttle(constant("{{maximumrequestcount}}")).timePeriodMillis("{{timeperiod}}")
In the second case the first parameter is an expression and the second
parameter a string.
It's thus flexible that both our possible. Is this now a standard that
object types will also become available as string or expression in the Java
DSL?
Raymond
On Tue, Sep 6, 2022 at 6:29 PM Claus Ibsen <cl...@gmail.com> wrote:
> Ah yeah we need a timeout that takes a string value
>
> .pollEnrich("myUrl).timeout("xxx")....
>
> I just added that to 3.19 and 3.18.x
>
>
>
> On Tue, Sep 6, 2022 at 4:46 PM ski n <ra...@gmail.com> wrote:
>
> > I like to create a route template with a parameter of a specific Java
> type.
> >
> > For example the following routetemplate:
> >
> > routeTemplate("mypollenrich")
> > .templateParameter("timeout","5000")
> > .from("direct:in")
> > .pollEnrich("myuri", "{{timeout}}","CurrentEnrichStrategy")
> > .to("direct:out");
> >
> > The above routetemplate is not accepted because the parameter
> "{{timeout}}"
> > is a String, while a long is expected. Is it possible to pass the
> parameter
> > as a long (and in general just any Java type)?
> >
> > I now tried to parse the String as Long like this:
> >
> > routeTemplate("mypollenrich")
> > .templateParameter("timeout","5000")
> > .from("direct:in")
> > .pollEnrich("myuri",
> > Long.parseLong("{{timeout}}"),"CurrentEnrichStrategy")
> > .to("direct:out");
> >
> > But doesn't seem allowed. What is the correct way of doing it?
> >
> > Raymond
> >
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>
Re: Types in routeTemplates
Posted by Claus Ibsen <cl...@gmail.com>.
Ah yeah we need a timeout that takes a string value
.pollEnrich("myUrl).timeout("xxx")....
I just added that to 3.19 and 3.18.x
On Tue, Sep 6, 2022 at 4:46 PM ski n <ra...@gmail.com> wrote:
> I like to create a route template with a parameter of a specific Java type.
>
> For example the following routetemplate:
>
> routeTemplate("mypollenrich")
> .templateParameter("timeout","5000")
> .from("direct:in")
> .pollEnrich("myuri", "{{timeout}}","CurrentEnrichStrategy")
> .to("direct:out");
>
> The above routetemplate is not accepted because the parameter "{{timeout}}"
> is a String, while a long is expected. Is it possible to pass the parameter
> as a long (and in general just any Java type)?
>
> I now tried to parse the String as Long like this:
>
> routeTemplate("mypollenrich")
> .templateParameter("timeout","5000")
> .from("direct:in")
> .pollEnrich("myuri",
> Long.parseLong("{{timeout}}"),"CurrentEnrichStrategy")
> .to("direct:out");
>
> But doesn't seem allowed. What is the correct way of doing it?
>
> Raymond
>
--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2