阅读量:0
在 Spring Boot 中,要实现 JMS 消息的持久化,你需要配置 JMS 连接工厂和消息监听器容器。以下是一个使用 ActiveMQ 作为消息代理的示例。
- 添加 ActiveMQ 依赖:
在 pom.xml
文件中添加以下依赖:
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
- 配置 ActiveMQ 连接工厂:
在 application.properties
或 application.yml
文件中添加以下配置:
# application.properties spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.packages.trust-all=true
或者
# application.yml spring: activemq: broker-url: tcp://localhost:61616 user: admin password: admin packages: trust-all: true
- 创建 JMS 模板:
创建一个配置类,用于初始化 JMS 模板和消息监听器容器。
import org.apache.activemq.ActiveMQConnectionFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.core.JmsTemplate; @Configuration public class JmsConfig { @Value("${spring.activemq.broker-url}") private String brokerUrl; @Value("${spring.activemq.user}") private String user; @Value("${spring.activemq.password}") private String password; @Bean public ActiveMQConnectionFactory connectionFactory() { ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); connectionFactory.setBrokerURL(brokerUrl); connectionFactory.setUserName(user); connectionFactory.setPassword(password); return connectionFactory; } @Bean public JmsTemplate jmsTemplate() { JmsTemplate jmsTemplate = new JmsTemplate(); jmsTemplate.setConnectionFactory(connectionFactory()); jmsTemplate.setDeliveryPersistent(true); // 设置消息持久化 return jmsTemplate; } @Bean public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory()); factory.setSessionTransacted(true); // 设置事务支持 return factory; } }
- 创建消息生产者和消费者:
创建一个消息生产者类,用于发送消息:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Component; @Component public class MessageProducer { @Autowired private JmsTemplate jmsTemplate; public void sendMessage(String destination, String message) { jmsTemplate.convertAndSend(destination, message); } }
创建一个消息消费者类,用于接收消息:
import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class MessageConsumer { @JmsListener(destination = "your.queue") public void receiveMessage(String message) { System.out.println("Received message: " + message); } }
- 发送和接收消息:
在你的应用程序中,使用 MessageProducer
发送消息,并在 MessageConsumer
中接收消息。这样,你就可以实现 JMS 消息的持久化了。