2017-04-14 26 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-接收 –