25.16. 启用转换功能
常见的要求是在事务中消耗队列,然后使用 Camel 路由处理消息。要做到这一点,只确保您在 component/endpoint 上设置以下属性:
-
transacted
= true -
transactionManager
= 一个 Transsaction Manager - 通常JmsTransactionManager
详情请查看 Transactional Client EIP 模式。
事务和[请求回复]超过 JMS
当在 JMS 上使用 Request Reply 时,您不能使用单一事务;在执行提交之前,JMS 不会发送任何消息,因此服务器端不会收到任何消息,直到事务提交为止。因此,若要使用 Request Reply,您必须在发送请求后提交事务,然后使用单独的事务来接收响应。
为解决此问题,JMS 组件使用不同的属性来指定用于单向消息的事务用途和请求回复消息:
transacted
属性 仅适用于 In Only message Exchange Pattern(MEP)。
您可以使用 component/endpoint 上的以下属性利用 DMLC 转换的会话 API :
-
transacted
= true -
lazyCreateTransactionManager
= false
这样做的好处是,在使用没有配置的 TransactionManager 的本地事务时,将遵从 cacheLevel 设置。配置 TransactionManager 时,在 DMLC 级别不会发生缓存,且必须依赖池的连接工厂。有关这一设置的详情,请查看 这里 和 此处。