2017-04-14 4 views
1

activeMq 브로커 마녀가있는 Jms 소비자가 "트랜잭션"승인을 받도록하려고합니다. 나는 봄 부팅 응용 프로그램을 사용하고 싶습니다.@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/spring-boot/docs/current/reference/html/boot-features-messaging.html # boot-features-using-jms-receiving –