legongju.com
我们一直在努力
2025-01-09 19:22 | 星期四

Spring Boot JMS消息持久化设置

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

  1. 添加 ActiveMQ 依赖:

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

   org.springframework.boot
   spring-boot-starter-activemq

  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 消息的持久化了。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/92977.html

相关推荐

  • Spring Boot JMS配置优化建议

    Spring Boot JMS配置优化建议

    在使用Spring Boot和JMS进行消息队列处理时,可以根据项目需求和性能要求进行一些配置优化。以下是一些建议: 选择合适的消息代理:根据项目需求选择合适的消息代...

  • Spring Boot接收JMS消息的方法

    Spring Boot接收JMS消息的方法

    在Spring Boot中,接收JMS消息的方法主要是通过使用@JmsListener注解和配置JMS监听器容器。以下是一个简单的示例,展示了如何在Spring Boot应用程序中接收JMS消息...

  • Spring Boot JMS消息发送技巧有哪些

    Spring Boot JMS消息发送技巧有哪些

    在Spring Boot中使用JMS(Java Message Service)进行消息发送时,可以遵循以下技巧和最佳实践: 引入依赖:确保在项目的pom.xml或build.gradle文件中添加了相关...

  • 如何在Spring Boot中集成JMS

    如何在Spring Boot中集成JMS

    要在Spring Boot中集成JMS,您需要遵循以下步骤: 添加依赖项 在pom.xml文件中,添加ActiveMQ和Spring JMS的依赖项。这是一个示例: org.apache.activemq active...

  • Spring Boot JMS与AMQP的选择

    Spring Boot JMS与AMQP的选择

    在选择Spring Boot JMS与AMQP之间时,需要考虑多个因素,包括消息传递的复杂性、系统的可扩展性、以及开发团队对不同协议的熟悉程度。以下是对两者的详细比较:<...

  • Java中goto的最佳实践建议

    Java中goto的最佳实践建议

    在Java中,goto关键字是保留的,但并不推荐使用。goto语句可以使程序流程变得复杂和难以理解,因此通常不建议在实际编程中使用。相反,可以使用其他控制结构(如...

  • Java的goto与异常处理的比较

    Java的goto与异常处理的比较

    Java中的goto语句和异常处理都是用于控制程序流程的方式,但它们之间有一些关键区别。 用途: goto:通常用于跳转到代码的某个特定位置,以实现非结构化的控制流...

  • Java的goto在循环控制中的应用

    Java的goto在循环控制中的应用

    在Java中,goto语句是一个保留关键字,但实际上并没有被使用。Java设计者们认为,goto语句会导致代码结构混乱,难以阅读和维护,因此选择了不支持goto语句。