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/