2017-04-14 24 views
1

我试图让一个JMS消费者与activeMq代理女巫有一个“事务性”确认。我想使用spring启动应用程序。@JmsListener上的ActiveMq事务

我读到我需要JTA事务,但我不知道如何启动它。

我的主类:

@SpringBootApplication 
@EnableJms 
public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

我的消费:

@Component 
public class ReceiveMessage { 
    @JmsListener(destination = "${jms.queue.destination}") 
    public void receiveMessage(final String msg) throws Exception { 
     System.out.println("Received:" + msg); 
    } 
} 

我的pom.xml依赖:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-activemq</artifactId> 
    </dependency> 
</dependencies> 

我该怎么办?

回答

1

更新您的消费:

@Component 
public class ReceiveMessage { 
    @JmsListener(destination = "${jms.queue.destination}", containerFactory = "jmsListenerContainerFactory") 
    public void receiveMessage(final String msg) throws Exception { 
     System.out.println("Received:" + msg); 
    } 
} 

添加这些豆类:

@Bean 
public JmsListenerContainerFactory<?> jmsListenerContainerFactory(
     ConnectionFactory connectionFactory, 
     DefaultJmsListenerContainerFactoryConfigurer configurer) { 
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); 
    configurer.configure(factory, connectionFactory); 
    factory.setTransactionManager(transactionManager()); 
    return factory; 
} 

@Bean 
public PlatformTransactionManager transactionManager() { 
    JmsTransactionManager transactionManager = new JmsTransactionManager(); 
    transactionManager.setConnectionFactory(jmsConnectionFactory()); 
    return transactionManager; 
} 

@Bean 
public QueueConnectionFactory jmsConnectionFactory() { 
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:5672"); 
    return connectionFactory; 
} 
+0

它的工作原理,但它绕过春天开机自动配置 – BokC

+0

是的同样喜欢使用特定的MessageConverter的https://docs.spring .IO /弹簧引导/文档/电流/参考/ HTML /启动功能 - 的messaging.html#引导特征-使用-JMS-接收 –