in jms-jpa/src/main/java/org/acme/CamelRoutes.java [31:71]
public void configure() {
rest("/messages")
.produces("text/plain")
.get()
.to("direct:messages")
.post("/{message}")
.param().name("message").type(RestParamType.path).dataType("string").endParam()
.to("direct:trans");
from("direct:messages")
.to("jpa:org.acme.AuditLog?namedQuery=getAuditLog")
.convertBodyTo(String.class);
from("direct:trans")
.transacted()
.setBody(simple("${headers.message}"))
.process(x -> {
DummyXAResource xaResource = new DummyXAResource("crash".equals(x.getIn().getBody(String.class)));
transactionManager.getTransaction().enlistResource(xaResource);
})
.to("jms:outbound?disableReplyTo=true")
.to("bean:auditLog?method=createAuditLog(${body})")
.to("jpa:org.acme.AuditLog")
.setBody(simple("${headers.message}"))
.choice()
.when(body().startsWith("fail"))
.log("Forced exception")
.process(x -> {
throw new RuntimeException("fail");
})
.otherwise()
.log("Message added: ${body}")
.endChoice();
from("xajms:outbound")
.transacted()
.log("Message out: ${body}")
.to("bean:auditLog?method=createAuditLog(${body}-ok)")
.to("jpa:org.acme.AuditLog");
}