springboot整合RabbitMQ详解

springboot整合RabbitMQ

一. 消息中间件产生的背景

1、在网络通讯中,Http请求默认采用同步请求方式,基于请求与响应模式;
2、客户端与服务器进行通讯时,客户端调用服务接口后,必须等待服务端完成处理后返回结果给客户端才能继续执行,这种情况属于同步调用方式;
3、如果服务器端发生网络延迟、不卡大的情况,可能客户端也会受到影响;

二. 消息中间件的作用
消息队列中间件是分布式系统中重要的组件,主要解决“应用解耦”、“异步消息”、“流量削峰等问题”,实现高性能、高可用、可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、metaMQ、RocketMQ等;

三. springboot同RabbitMQ的整合
使用idea按照如下格式创建工程:其中rabbit-mq为父工程,并闯将两个子工程:rabbitmq_consumser和rabbitmq_producer;
springboot整合RabbitMQ详解
对于生产者工程:

1. pom.xml 文件添加依赖:

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 添加springboot对RabbitMQ的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>1.5.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.40</version>
        </dependency>
    </dependencies>

2.application.yml文件修改
注意,此处请自行安erlang和RabbitMQ;并添加相关用户及virtual-host

spring:
  rabbitmq:
    #rabbitMQ服务器地址
    host: 127.0.0.1
    #服务器端口号
    port: 5672
    #用户名
    username: yangpeng
    #密码
    password: 123qwe123
    #virtual_host名称
    virtual-host: /admin_yangpeng

3.注入相关配置文件(该配置文件主要是创建queue(队列),创建Exchange(交换机),并将队列绑定到交换机上);且此处用的是RabbitMQ的fanout(发布订阅)模式