gpt4 book ai didi

java - @JmsListener 上的 ActiveMq 事务

转载 作者:行者123 更新时间:2023-11-30 02:34:41 29 4
gpt4 key购买 nike

我尝试让带有 activeMq 代理的 Jms 消费者获得“事务性”确认。我想使用 Spring Boot 应用程序。

我读到我需要 JTA 事务,但我不知道如何开始一个事务。

我的主要类(class):

@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>

我必须做什么?

最佳答案

更新您的消费者:

@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 :

@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;
}

关于java - @JmsListener 上的 ActiveMq 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43409193/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com