@Named("PROPAGATION_REQUIRED")
public class CdiRequiredPolicy extends SpringTransactionPolicy {
@Inject
public CdiRequiredPolicy(CdiTransactionManager cdiTransactionManager) {
super(new TransactionTemplate(cdiTransactionManager,
new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED)));
}
}
@Named("PROPAGATION_REQUIRED")
public class CdiRequiredPolicy extends SpringTransactionPolicy {
@Inject
public CdiRequiredPolicy(CdiTransactionManager cdiTransactionManager) {
super(new TransactionTemplate(cdiTransactionManager,
new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED)));
}
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
これで、Camel RouteBuilder クラスを設定し、Camel JMS コンポーネントに必要な依存関係を注入できるようになりました。JBoss EAP XA 接続ファクトリーは、以前に設定されたトランザクションマネージャーとともに注入されます。
@Startup
@ApplicationScoped
@ContextName("jms-camel-context")
public class JMSRouteBuilder extends RouteBuilder {
@Resource(mappedName = "java:/JmsXA")
private ConnectionFactory connectionFactory;
@Inject
CdiTransactionManager transactionManager;
@Override
public void configure() throws Exception {
// Creates a JMS component which supports transactions
JmsComponent jmsComponent = JmsComponent.jmsComponentTransacted(connectionFactory, transactionManager);
getContext().addComponent("jms", jmsComponent);
from("jms:queue:queue1")
.transacted("PROPAGATION_REQUIRED")
.to("jms:queue:queue2");
// Force the transaction to roll back. The message will end up on the Wildfly 'DLQ' message queue
from("jms:queue:queue2")
.to("log:end")
.rollback();
}
@Startup
@ApplicationScoped
@ContextName("jms-camel-context")
public class JMSRouteBuilder extends RouteBuilder {
@Resource(mappedName = "java:/JmsXA")
private ConnectionFactory connectionFactory;
@Inject
CdiTransactionManager transactionManager;
@Override
public void configure() throws Exception {
// Creates a JMS component which supports transactions
JmsComponent jmsComponent = JmsComponent.jmsComponentTransacted(connectionFactory, transactionManager);
getContext().addComponent("jms", jmsComponent);
from("jms:queue:queue1")
.transacted("PROPAGATION_REQUIRED")
.to("jms:queue:queue2");
// Force the transaction to roll back. The message will end up on the Wildfly 'DLQ' message queue
from("jms:queue:queue2")
.to("log:end")
.rollback();
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow