java rabbitmq 队列在Springboot的设计

最简单模式一:生产者producer+队列queue+消费者consuner

生产者producer:

//注入发送模板

复制代码
@Autowired private RabbitTemplate rabbitTemplate;

//生产者发送信息

@PostMapping("rabbimq")
public String rebbimq(@RequestBody User user) {
    String msg = "队列进来了。。。";
    rabbitTemplate.convertAndSend("simple.queue", msg);
    return msg;
}
复制代码
//队列queue:注册队列
复制代码
@Configuration
public class RabbitMqConfig {
    @Bean
    Queue queue() {
        return new Queue("simple.queue");
    }
}
复制代码
//因为Java要序列号,或者json格式才能通信传输,所以要转格式;
@Bean
Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
    return new Jackson2JsonMessageConverter();
}

消费者consuner

复制代码
@Service
public class RabbitmqListenerMsg {
    @RabbitListener(queues = "simple.queue")
    public void handleMsg(String msg) {
        System.out.println("处理队列完成:" + msg);
    }
}

模式二(工作队列模式):生产者producer+队列queue+消费者consuner

//注入发送模板

复制代码
@Autowired private RabbitTemplate rabbitTemplate;

//生产者发送信息

复制代码
@PostMapping("/rabbimqSend")
public Map<String,Object> sendMap(){
    Map<String,Object> map = new HashMap<>();
    map.put("name","韦锦林");
    map.put("age","37");
    map.put("addr","贵州");
    rabbitTemplate.convertAndSend("work.queue", map);
    return map;
}
复制代码
//队列queue:注册队列
复制代码
@Configuration
public class RabbitMqConfig {
    @Bean
    Queue queue() {
        return new Queue("simple.queue");
    }
   //因为Java要序列号,或者json格式才能通信传输,所以要转格式; 
   @Bean 
   Jackson2JsonMessageConverter jackson2JsonMessageConverter() { 
     return new Jackson2JsonMessageConverter(); 
 }
}
复制代码

消费者consuner

复制代码
@Service
public class RabbitmqListenerMsg {
    @RabbitListener(queues = "work.queue")
    public void handleMsg(Map<String,Object> map) {
        System.out.println("处理队列完成A消费:" + map);
    }
    @RabbitListener(queues = "work.queue")
    public void handleMsgB(Map<String,Object> map) {
        System.out.println("处理队列完成B消费:" + map);
    }
}

模式三(路由队列模式):生产者producer+队列queue+交换机exchange+消费者consuner

//注入发送模板

复制代码
@Autowired private RabbitTemplate rabbitTemplate;

//生产者发送信息

复制代码
@PostMapping("/rabbimqSend")
public Map<String,Object> sendMap(){
    Map<String,Object> map = new HashMap<>();
    map.put("name","韦锦林");
    map.put("age","37");
    map.put("addr","贵州");
    rabbitTemplate.convertAndSend("work.queue", map);
    return map;
}
复制代码
//队列queue:注册队列
复制代码
@Configuration
public class RabbitMqConfig {
    @Bean
    Queue queue() {
        return new Queue("simple.queue");
    }
复制代码
    //交换机
   @Bean
   public Exchange builExchange(){
      return ExchangeBuilder.directExchange("route.exchange").durable(true).build();
   }
   //路由绑定
   @Bean
   public Binding builBinding(Queue queue,DirectExchange exchange){
       return BindingBuilder.bind(queue).to(exchange).withQueueName();
   }
复制代码
   //因为Java要序列号,或者json格式才能通信传输,所以要转格式;
   @Bean
   Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
      return new Jackson2JsonMessageConverter();
   }
复制代码
}

消费者consuner

复制代码
@Service
public class RabbitmqListenerMsg {
    @RabbitListener(queues = "work.queue")
    public void handleMsg(Map<String,Object> map) {
        System.out.println("处理队列完成A消费:" + map);
    }
    @RabbitListener(queues = "work.queue")
    public void handleMsgB(Map<String,Object> map) {
        System.out.println("处理队列完成B消费:" + map);
    }
}

模式四(主题队列模式):生产者producer+队列queue+交换机exchange+消费者consuner

//注入发送模板

复制代码
@Autowired private RabbitTemplate rabbitTemplate;

//生产者发送信息

复制代码
@PostMapping("/rabbimqSend")
复制代码
public Map<String,Object> sendMap(){
    Map<String,Object> map = new HashMap<>();
    map.put("name","韦锦林");
    map.put("age","37");
    map.put("addr","贵州");
    //指定队列队列执行:order和log执行,可以加可减
    rabbitTemplate.convertAndSend("topic.exchange","order.log", map);
    return map;
}
复制代码
//队列queue:注册队列
复制代码
@Configuration
public class RabbitMqConfig {
    //订单队列
    @Bean("order")
    Queue queue() {
        return new Queue("order.queue");
    }

    //用户队列
    @Bean("user")
    Queue queue2() {
        return new Queue("user.queue");
    }

    //日志队列
    @Bean("log")
    Queue queue3() {
        return new Queue("log.queue");
    }

    //交换机
    @Bean
    public Exchange builExchange() {
        return ExchangeBuilder.topicExchange("topic.exchange").durable(true).build();
    }

    //路由绑定队列1
    @Bean
    public Binding builBinding(
            @Qualifier("order") Queue queue,
            TopicExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("#.order.#");
    }
    //路由绑定队列2
    @Bean
    public Binding builBinding2(
            @Qualifier("user") Queue queue,
            TopicExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("#.user.#");
    }
    //路由绑定队列3
    @Bean
    public Binding builBinding3(
            @Qualifier("log") Queue queue,
            TopicExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("#.log.#");
    }


    //因为Java要序列号,或者json格式才能通信传输,所以要转格式;
    @Bean
    Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
        return new Jackson2JsonMessageConverter();
    }
}

消费者consuner

复制代码
@Service
public class RabbitmqListenerMsg {
    @RabbitListener(queues = "order.queue")
    public void handleMsg(Map<String,Object> map) {
        System.out.println("处理队列完成_order消费:" + map);
    }
    @RabbitListener(queues = "user.queue")
    public void handleMsg2(Map<String,Object> map) {
        System.out.println("处理队列完成_user消费:" + map);
    }
    @RabbitListener(queues = "log.queue")
    public void handleMsg3(Map<String,Object> map) {
        System.out.println("处理队列完成_log消费:" + map);
    }
}

广播模式五:生产者producer+队列queue+消费者consuner

//注入发送模板

复制代码
@Autowired private RabbitTemplate rabbitTemplate;

//生产者发送信息

复制代码
@PostMapping("/rabbimqSend")
复制代码
public Map<String,Object> sendMap(){
    Map<String,Object> map = new HashMap<>();
    map.put("name","韦锦林");
    map.put("age","37");
    map.put("addr","贵州");
    //指定队列队列执行
    rabbitTemplate.convertAndSend("fanout.exchange","", map);
    return map;
}
复制代码
//队列queue:注册队列
复制代码
@Configuration
复制代码
public class RabbitMqConfig {
    //订单队列
    @Bean("order")
    Queue queue() {
        return new Queue("order.queue");
    }

    //用户队列
    @Bean("user")
    Queue queue2() {
        return new Queue("user.queue");
    }

    //日志队列
    @Bean("log")
    Queue queue3() {
        return new Queue("log.queue");
    }

    //交换机
    @Bean
    public Exchange builExchange() {
        return ExchangeBuilder.fanoutExchange("fanout.exchange").durable(true).build();
    }

    //路由绑定队列1
    @Bean
    public Binding builBinding(
            @Qualifier("order") Queue queue,
            FanoutExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange);
    }
    //路由绑定队列2
    @Bean
    public Binding builBinding2(
            @Qualifier("user") Queue queue,
            FanoutExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange);
    }
    //路由绑定队列3
    @Bean
    public Binding builBinding3(
            @Qualifier("log") Queue queue,
            FanoutExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange);
    }


    //因为Java要序列号,或者json格式才能通信传输,所以要转格式;
    @Bean
    Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
        return new Jackson2JsonMessageConverter();
    }
}

消费者consuner

复制代码
@Service
public class RabbitmqListenerMsg {
    @RabbitListener(queues = "order.queue")
    public void handleMsg(Map<String,Object> map) {
        System.out.println("处理队列完成_order消费:" + map);
    }
    @RabbitListener(queues = "user.queue")
    public void handleMsg2(Map<String,Object> map) {
        System.out.println("处理队列完成_user消费:" + map);
    }
    @RabbitListener(queues = "log.queue")
    public void handleMsg3(Map<String,Object> map) {
        System.out.println("处理队列完成_log消费:" + map);
    }
}
相关推荐
君顾16 分钟前
折扣卡 CPS 小程序定制:从业务流程到系统架构的实践指南
java·开发语言·折扣卡
见不散8 分钟前
GPT-5.6 Luna (Batch) 批量处理能力深度评测
java·gpt·batch
计算机毕设定制辅导-无忧学长26 分钟前
《基于SpringBoot的庭院玫瑰栽培养护知识交互式科普平台设计与实现》
java·spring boot·后端·毕业设计·个性化推荐·协同过滤算法·庭院玫瑰栽培养护知识科普平台
Json____1 小时前
从零构建家政服务平台:一套全栈架构如何打通管理端与移动端-java-springboot
java·spring boot·后端·架构·毕设·wwwoop.com
云雀衔光2 小时前
Java Spring AI MCP:在 Spring 里把 AI 接上你的业务系统
java·开发语言·人工智能·后端·测试工具·spring
重生之小比特2 小时前
【Java SE】数据类型与变量
java·开发语言·python
苏渡苇2 小时前
Spring Insight 里如何对 Span 进行清洗
java·spring boot·后端·spring·系统监控
find1star2 小时前
LeetCode 54:螺旋矩阵——用四个边界模拟矩阵收缩
java·算法·leetcode·边缘计算·学习方法
Yeniden2 小时前
Java 后端从零到企业级:第1篇 Java 基础语法——变量、数据类型与运算符
java·开发语言·apache
邪修king2 小时前
Linux系统篇(二十三) 基础 IO:从“文件”到“文件描述符”,彻底理解重定向
android·java·linux