anchor.diff:  This is after all based on a unit test. Notice that we mark each route
   as transacted using the *transacted* tag.
   
  -/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/springTransactionalClientDataSourceMinimalConfiguration.xml
  +[source,xml]
  +----
  +    <camelContext xmlns="http://camel.apache.org/schema/spring">
  +    <route>
  +        <from uri="direct:okay"/>
  +        <!-- we mark this route as transacted. Camel will lookup the spring transaction manager
  +             and use it by default. We can optimally pass in arguments to specify a policy to use
  +             that is configured with a spring transaction manager of choice. However Camel supports
  +             convention over configuration as we can just use the defaults out of the box and Camel
  +             that suites in most situations -->
  +        <transacted/>
  +        <setBody>
  +            <constant>Tiger in Action</constant>
  +        </setBody>
  +        <bean ref="bookService"/>
  +        <setBody>
  +            <constant>Elephant in Action</constant>
  +        </setBody>
  +        <bean ref="bookService"/>
  +    </route>
  +
  +    <route>
  +        <from uri="direct:fail"/>
  +        <!-- we mark this route as transacted. See comments above. -->
  +        <transacted/>
  +        <setBody>
  +            <constant>Tiger in Action</constant>
  +        </setBody>
  +        <bean ref="bookService"/>
  +        <setBody>
  +            <constant>Donkey in Action</constant>
  +        </setBody>
  +        <bean ref="bookService"/>
  +    </route>
  +    </camelContext>
  +----
   
   That is all that is needed to configure a Camel route as being transacted.
   Just remember to use the *transacted* DSL. The rest is standard Spring
  
positive.code: factory, a JMS transaction manager and our ActiveMQ component that we
  use in our routing.
  
  /components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/TransactionMinimalConfigurationTest.xml
  
  And then we configure our routes. Notice that all we have to do is mark the
  route as transacted using the *transacted* tag.
  
  /components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/TransactionMinimalConfigurationTest.xml
  
  ===== Transaction error handler
  
  
negative.code: 
  This is configured in the Spring XML file:
  
  [source,xml]
  ----
      <bean id="PROPAGATION_REQUIRED" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
          <property name="transactionManager" ref="txManager"/>
          <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"/>
      </bean>
  
      <bean id="PROPAGATION_REQUIRES_NEW" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
          <property name="transactionManager" ref="txManager"/>
          <property name="propagationBehaviorName" value="PROPAGATION_REQUIRES_NEW"/>
      </bean>
  ----
  
  Then in the routes you use transacted DSL to indicate which of these two
  propagations it uses.
  
  [source,java]
  ----
      from("direct:mixed")
      // using required
      .transacted("PROPAGATION_REQUIRED")
      // all these steps will be okay
      .setBody(constant("Tiger in Action")).bean("bookService")
      .setBody(constant("Elephant in Action")).bean("bookService")
      // continue on route 2
      .to("direct:mixed2");
  
      from("direct:mixed2")
      // tell Camel that if this route fails then only rollback this last route
      // by using (rollback only *last*)
      .onException(Exception.class).markRollbackOnlyLast().end()
      // using a different propagation which is requires new
      .transacted("PROPAGATION_REQUIRES_NEW")
      // this step will be okay
      .setBody(constant("Lion in Action")).bean("bookService")
      // this step will fail with donkey
      .setBody(constant("Donkey in Action")).bean("bookService");
  ----
  
  Notice how we have configured the `onException` in the 2nd route to indicate in
  case of any exceptions we should handle it and just rollback this
  