Spring Boot JMS消息持久化设置

avatar
作者
猴君
阅读量:0

在 Spring Boot 中,要实现 JMS 消息的持久化,你需要配置 JMS 连接工厂和消息监听器容器。以下是一个使用 ActiveMQ 作为消息代理的示例。

  1. 添加 ActiveMQ 依赖:

pom.xml 文件中添加以下依赖:

   <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-activemq</artifactId> </dependency> 
  1. 配置 ActiveMQ 连接工厂:

application.propertiesapplication.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 
  1. 创建 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;     } } 
  1. 创建消息生产者和消费者:

创建一个消息生产者类,用于发送消息:

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);     } } 
  1. 发送和接收消息:

在你的应用程序中,使用 MessageProducer 发送消息,并在 MessageConsumer 中接收消息。这样,你就可以实现 JMS 消息的持久化了。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!