博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html

有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。

最后再送一句:最好是学会了,而不是学废了!!

2

在 Spring Boot 中使用 RabbitMQ 批量推送 2000 条数据到另一个系统,可以通过以下步骤实现。这里会提供完整的技术方案和代码示例。


1. 技术方案设计

组件说明
生产者Spring Boot 服务,负责生成 2000 条数据并批量发送到 RabbitMQ 队列。
消费者另一个 Spring Boot 服务,监听队列并处理数据。
RabbitMQ消息中间件,负责可靠地传递数据。
批量发送使用 RabbitTemplate 循环发送,或通过 BatchingRabbitTemplate 优化。
数据格式JSON 序列化(推荐)或 Java 对象序列化。

2. 实现步骤

2.1 添加依赖

在 pom.xml 中引入 RabbitMQ 和 JSON 支持:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>

运行 HTML

2.2 配置 RabbitMQ

在 application.yml 中配置连接:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    template:
      exchange: data.exchange
      routing-key: data.routingkey
2.3 定义数据模型
public class DataMessage {
    private Long id;
    private String content;
    // Getters and Setters
}
2.4 生产者服务

发送 2000 条数据到队列:

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DataProducer {
    
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendBatchData() {
        for (int i = 1; i <= 2000; i++) {
            DataMessage message = new DataMessage();
            message.setId((long) i);
            message.setContent("Data-" + i);
            
            // 发送到 RabbitMQ(JSON 序列化)
            rabbitTemplate.convertAndSend(
                "data.exchange", 
                "data.routingkey", 
                message
            );
        }
        System.out.println("2000 条数据已发送!");
    }
}
2.5 消费者服务

监听队列并处理数据:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

@Service
public class DataConsumer {

    @RabbitListener(queues = "data.queue")
    public void receiveMessage(DataMessage message) {
        System.out.println("收到数据: " + message.getId() + ", " + message.getContent());
        // 在这里处理业务逻辑(如存储到数据库)
    }
}
2.6 配置交换机和队列

在生产者或消费者中声明队列和交换机(也可通过 RabbitMQ 管理界面提前创建):

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMQConfig {

    @Bean
    public TopicExchange dataExchange() {
        return new TopicExchange("data.exchange");
    }

    @Bean
    public Queue dataQueue() {
        return new Queue("data.queue");
    }

    @Bean
    public Binding binding() {
        return BindingBuilder
            .bind(dataQueue())
            .to(dataExchange())
            .with("data.routingkey");
    }
}
2.7 触发生产者

在 Controller 中调用生产者:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DataController {

    @Autowired
    private DataProducer dataProducer;

    @GetMapping("/send-data")
    public String sendData() {
        dataProducer.sendBatchData();
        return "数据推送已启动!";
    }
}

3. 优化建议

3.1 批量发送(Batching)

使用 BatchingRabbitTemplate 提高吞吐量(需配置批量大小和超时时间):

@Bean
public BatchingRabbitTemplate batchTemplate(ConnectionFactory connectionFactory) {
    BatchingStrategy strategy = new SimpleBatchingStrategy(100, 1024 * 1024, 1000);
    return new BatchingRabbitTemplate(strategy, connectionFactory);
}
3.2 异步确认

启用生产者确认模式(publisher-confirms),确保消息可靠投递:

spring:
  rabbitmq:
    publisher-confirms: true
    publisher-returns: true
3.3 消费者并发

提高消费者并发处理能力:

spring:
  rabbitmq:
    listener:
      simple:
        concurrency: 10  # 并发消费者数量
        max-concurrency: 20
3.4 死信队列

配置死信队列处理失败消息(参考前文死信队列部分)。


4. 测试流程

  1. 启动 RabbitMQ 服务。

  2. 启动生产者服务,访问 http://localhost:8080/send-data 触发发送。

  3. 启动消费者服务,观察控制台输出。


5. 关键注意事项

  1. 幂等性:消费者需处理重复消息(如通过唯一 ID 去重)。

  2. 错误处理:捕获消费者异常,避免消息丢失。

  3. 性能监控:通过 RabbitMQ 管理界面监控队列积压情况。


通过以上步骤,可以高效可靠地实现 Spring Boot + RabbitMQ 的批量数据推送。

3

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐