The "transacted" configuration requires a Spring environment. We use JavaEE and we needed to use "transacted". We ported the Spring implementation of the TransactionErrorHandler to JavaEE.
There is only one major difference: Spring's TransactionErrorHandler derives from org.apache.camel.processor.RedeliveryErrorHandler which brings the behavior that redelivery is done within the transaction. In our implementation there is a RedeliveryErrorHandler which uses the TransactionErrorHandler to force a rollback and create a new transaction for each redelivery.