28.16. 启用 Transacted Consumption
常见要求是从事务中的队列使用,然后使用 Camel 路由处理消息。要做到这一点,只请确定在组件/端点上设置以下属性:
-
Transacted= true -
transactionManager= Transsaction Manager - 通常是JmsTransactionManager
详情请查看 Transactional Client EIP 模式。
JMS 上的事务和 [Request Reply]
使用 Request Reply over JMS 时,您无法使用单个事务;在提交之前,JMS 不会发送任何消息,因此在事务提交之前,服务器端都不会收到任何内容。因此,若要在发送请求后使用 Request Reply 提交事务,然后使用单独的事务来接收响应。
要解决这个问题,JMS 组件使用不同的属性来指定用于单向消息传递和请求回复消息传递的事务使用:
转换属性 仅适用于 InOnly message Exchange Pattern (MEP)。
您可以使用组件/端点中的以下属性利用 DMLC 转换会话 API :
-
Transacted= true -
lazyCreateTransactionManager= false
这样做的好处是,当在没有配置的 TransactionManager 的情况下使用本地事务时,cacheLevel 设置将得到遵守。配置 TransactionManager 时,在 DMLC 级别上不会发生缓存,需要依赖池的连接工厂。有关此类设置的详情,请查看 此处 和 此处。