Very cool. Nice work Claus!

On Tue, Apr 7, 2009 at 4:57 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:

> Hi
>
> Latest progress now is that I have introduced the *transacted* DSL
> keyword in both Java DSL and Spring DSL.
> Its capable of auto lookup in the registry for the transaction policy
> so no need to wire it.
>
> For instance in this Spring XML
>
>        <route>
>            <from uri="direct:okay"/>
>            <transacted/>
>            <setBody>
>                <constant>Tiger in Action</constant>
>            </setBody>
>            <bean ref="bookService"/>
>            <setBody>
>                <constant>Elephant in Action</constant>
>            </setBody>
>            <bean ref="bookService"/>
>        </route>
>
> The <transacted/> will look for beans of type
> org.apache.camel.spi.TransactedPolicy that you define in the XML like
> this
>
>    <!-- policy for required transaction used in our Camel routes -->
>    <bean id="PROPAGATION_REQUIRED"
> class="org.apache.camel.spring.spi.SpringTransactionPolicy">
>        <property name="transactionManager" ref="txManager"/>
>    </bean>
>
> And on top of that you dont have to setup the transacted error
> handler, eg notice we dont have any errorHandlerRef in the route XML
> at all.
>
> So what you only *must* do for defining a route as transacted is to
> add the *transacted* DSL keyword.
>
>
> Next step in improvement would be to handle that the
> PROPAGATION_REQUIRED bean is optional, so Camel can lookup and find
> the PlatformManager and default to required itself. Just like the JMS
> component can do with transacted=true URI option.
>
>
>
>
>
>
>
> On Mon, Apr 6, 2009 at 1:56 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> > On Mon, Apr 6, 2009 at 10:12 AM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >> Hi
> >>
> >> Background is CAMEL-1475, however the ticket title is a bit misleading
> >>
> >> This morning I got Camel to be able to use transacted routes without
> >> you have to remember to configure a transactedErrorHandler.
> >> This makes it a bit easier to use transacted routes in Camel.
> >>
> >> So what you must do is use the *policy* DSL to define that this route
> >> is transacted.
> >> It still requires all the spring XML gobble to setup the TX manager
> >> and all that verbose XML you cannot remember.
> >> We can look at improving this later, want to keep the two of them
> >> separated to not loose oversight.
> >>
> >> What I wants to discuss is that I think the *policy* DSL keyword is a
> >> bit too loose. I would like it to be renamed to something that states
> >> its transacted, eg
> >> a) transacted
> >> b) transaction
> >> c) transactedPolicy
> >> d) transactionPolicy
> >>
> >> As the JMS component have a special *transacted* URI option, I would
> >> like the DSL to use same name as well.
> >> So I am in favor of option A.
> > I have worked a bit more on this. We keep the policy as is as it can
> > be used for generic wrapping routes by an interceptor.
> > We can use this for security stuff as well.
> >
> > I have instead added
> > - transacted()
> > - transacted(String ref)
> > to the ProcessorDefinition so we in the Java DSL can indicate the
> > route is transacted using a key word that states this than eg just
> > policy.
> > I am also working on being able to auto lookup the
> > PROPAGATION_REQUIRED so you dont even have to specify a reference.
> > Camel will
> > just use the one found, if there are ONLY ONE TransactedPolicy bean
> > defined in the registry.
> >
> > Next up is to be able to default to find the PlatformManager and just
> > use a default REQUIRED policy so we dont even have to setup the
> > PROPAGATION_REQUIRED bean in the XML. This will make it a bit easier
> > to configure, then you just have to remember all the standard Spring
> > TX XML stuff and then Camel can use it out of the box. Just you
> > remember to add the *transacted* DSL in the route.
> >
> > PS: We could even consider adding a *transacted=true* pseudo URI
> > option on DefaultComponent that will automatically added a
> > *transacted* DSL to the route. Well just a whacky idea.
> >
> >
> >
> >
> >
> >
> >>
> >> CAMEL-1475 also hints some more improvements we can do with convention
> >> over configuration, eg if there is only one SpringTransactionPolicy in
> >> the XML then use that.
> >>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> Apache Camel Committer
> >>
> >> Open Source Integration: http://fusesource.com
> >> Blog: http://davsclaus.blogspot.com/
> >> Twitter: http://twitter.com/davsclaus
> >> Apache Camel Reference Card:
> >> http://refcardz.dzone.com/refcardz/enterprise-integration
> >>
> >
> >
> >
> > --
> > Claus Ibsen
> > Apache Camel Committer
> >
> > Open Source Integration: http://fusesource.com
> > Blog: http://davsclaus.blogspot.com/
> > Twitter: http://twitter.com/davsclaus
> > Apache Camel Reference Card:
> > http://refcardz.dzone.com/refcardz/enterprise-integration
> >
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
> Apache Camel Reference Card:
> http://refcardz.dzone.com/refcardz/enterprise-integration
>



-- 
Cheers,
Jon

http://janstey.blogspot.com/

Reply via email to