35.5 混合XA和non-XA的JMS连接

当使用JTA时,primary JMS ConnectionFactorybean将能识别XA,并参与到分布式事务中。有些情况下,你可能需要使用non-XA的ConnectionFactory去处理一些JMS消息。例如,你的JMS处理逻辑可能比XA超时时间长。

如果想使用一个non-XA的ConnectionFactory,你可以注入nonXaJmsConnectionFactory bean而不是@Primary jmsConnectionFactory bean。为了保持一致,jmsConnectionFactory bean将以别名xaJmsConnectionFactor来被使用。

示例如下:

  1. // Inject the primary (XA aware) ConnectionFactory
  2. @Autowired
  3. private ConnectionFactory defaultConnectionFactory;
  4. // Inject the XA aware ConnectionFactory (uses the alias and injects the same as above)
  5. @Autowired
  6. @Qualifier("xaJmsConnectionFactory")
  7. private ConnectionFactory xaConnectionFactory;
  8. // Inject the non-XA aware ConnectionFactory
  9. @Autowired
  10. @Qualifier("nonXaJmsConnectionFactory")
  11. private ConnectionFactory nonXaConnectionFactory;