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);
    }
}
相关推荐
Cc.Y23 分钟前
Java零基础入门:类与对象深度掌握 —— 从“零散变量“到“打包管理“
java·开发语言·python
\光辉岁月/25 分钟前
2.java变量
java·开发语言·变量
Wang's Blog27 分钟前
Java 项目实战: 外卖平台优化-前端dist部署与Nginx反向代理rewrite
java·前端·nginx
专业程序开发源28 分钟前
springboot生命故事书制作小程序65290-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·mysql·小程序·课程设计
代码山河43 分钟前
Java的前世今生:从Oak语言到Java 23的发展史
java·学习·架构·教程·面向对象·项目
vx_Biye_Design44 分钟前
springboot角色扮演服务平台65161-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·spring·课程设计
李游Leo1 小时前
HarmonyOS 7 QuickDock 闪控窗开发实录 02:floatView × floatingBall:形态切换、位置恢复与单一状态源【鸿蒙心迹】
java·华为·harmonyos
企业数字化笔记1 小时前
视频局部合成怎么做得自然?掩膜修复、边缘羽化、时序稳定与背景替换
java·javascript·音视频
仍然.1 小时前
Redis---主从复制
java·数据库·redis
vx_Biye_Design1 小时前
springboot咖啡厅顾客点单管理系统12080-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express