Spring Boot JMS消息持久化设置

   2024-09-30 9440
核心提示:在 Spring Boot 中,要实现 JMS 消息的持久化,你需要配置 JMS 连接工厂和消息监听器容器。以下是一个使用 ActiveMQ 作为消息代

在 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.propertiesspring.activemq.broker-url=tcp://localhost:61616spring.activemq.user=adminspring.activemq.password=adminspring.activemq.packages.trust-all=true

或者

# application.ymlspring:  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;@Configurationpublic 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;@Componentpublic 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;@Componentpublic class MessageConsumer {    @JmsListener(destination = "your.queue")    public void receiveMessage(String message) {        System.out.println("Received message: " + message);    }}
发送和接收消息:

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

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号