栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

RabbitMQ(三)消费者生产者

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RabbitMQ(三)消费者生产者

文章目录
  • 前置:RabbitMQ的工作机制和架构图
  • 一. 搭建一个空的工程
    • 1.1 建立consumer01工程—创建消费者
      • 1.1.1 依赖
      • 1.1.2 application配置
      • 1.1.3 RabbitConfig
      • 1.1.4 RabbitConsumer
    • 1.2 建立producer01工程—创建生产者
      • 1.2.1 依赖
      • 1.2.2 application
      • 1.2.3 创建一个和消费者一样的RabbitConfig
      • 1.2.4 生产者的测试类创建消息模板
      • 1.2.5 测试结果即RabbitMQ网页显示

前置:RabbitMQ的工作机制和架构图

消息中间件最大的特点就是解耦:生产者只要把消息发送不去就可以不用管了,消费者不管在不在线都行,消费者上线的时候会来处理带消费的信息

  • Publisher - 生产者:发布消息到RabbitMQ中的Exchange
  • Consumer - 消费者:监听RabbitMQ中的Queue中的消息
  • Exchange - 交换机:和生产者建立连接并接收生产者的消息
  • Queue - 队列:Exchange会将消息分发到指定的Queue,Queue和消费者进行交互
  • Routes - 路由:交换机以什么样的策略将消息发布到Queue

简单架构图

原理:消息发送的时候,
1.先由生产者发送到消息交换机(有默认,可配置)
2.消息交换机根据既定的策略帮你把消息路由到不同的队列上面去(意味着消息收发的形式更加的多样)
3.消息消费者就去监听不同的队列

完整架构图

一. 搭建一个空的工程

目的:方便日后多个项目关联及扩充

第一步

1.1 建立consumer01工程—创建消费者

1.1.1 依赖
                                             
     org.springframework.boot         
     spring-boot-starter-amqp   
                                            
                                             
     org.springframework.boot         
     spring-boot-starter-web    
                                            
                                                         
                                             
     org.springframework.boot         
     spring-boot-starter-test   
     test                                 
                                            
                                             
     org.springframework.amqp         
     spring-rabbit-test         
     test                                 
                                            
1.1.2 application配置
spring.rabbitmq.host=1.12.235.192
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

#虚拟主机,这个配置非常重要
spring.rabbitmq.virtual-host=/
1.1.3 RabbitConfig
package com.huang.config;

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



@Configuration
public class RabbitConfig {
    public static  final   String MY_QUEUE_NAME_01= "hello-queue";

    
    @Bean
    Queue myQueue(){
        

        return  new Queue(MY_QUEUE_NAME_01,true,false,false);
    }
}


1.1.4 RabbitConsumer
package com.huang.consumer;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;



@Component
public class RabbitConsumer {
       private static  final Logger logger = LoggerFactory.getLogger(RabbitConsumer.class);

    
    @RabbitListener(queues = "hello-queue")
       public  void  handleMsg(String msg){
           logger.info("msg:{}",msg);
       }

}
1.2 建立producer01工程—创建生产者

1.2.1 依赖
  
            org.springframework.boot
            spring-boot-starter-amqp
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
1.2.2 application
spring.rabbitmq.host=1.12.235.192
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

//5672通信管理,15672界面管理
spring.rabbitmq.port=5672
spring.rabbitmq.virtual-host=/
1.2.3 创建一个和消费者一样的RabbitConfig 1.2.4 生产者的测试类创建消息模板
@SpringBootTest
class Producer01ApplicationTests {
    //这个就是一个消息发送模板
    @Autowired
    RabbitTemplate rabbitTemplate;

    @Test
    void contextLoads() {
        
     rabbitTemplate.convertAndSend(RabbitConfig.MY_QUEUE_NAME_01,"hello rabbitmq!");
    }
}

运行这个测试类去发送消息,消费者收到消息

1.2.5 测试结果即RabbitMQ网页显示

java的生产者启动后,消费者控制台收到消息

RabbitMQ界面显示

1.Ready等待消费的消息数量
2.Unacked消息已经消费确认数量
3.totl是1和2的总和

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040885.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号