RabbitMQ介绍,搭建及spring集成

目录

RabbitMQ是什么?

常见的消息中间件,及应用场景?

RabbitMQ的应用场景

1、服务解耦

2、流量削峰

3、异步调用

RabbitMQ安装

sprngboot集成RabbitMQ

1.pom依赖

2.配置文件(conf.properties)

3.测试


RabbitMQ是什么?

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。

常见的消息中间件,及应用场景?

Kafka、ActiveMQ、RabbitMQ、RocketMQ

ActiveMq与RabbitMq都基于主从架构并且单机吞吐量每秒万级别,RocketMq和Kafka天然支持分布式并且单机吞吐量为十万级别。ActiveMq有较低概率丢失数据,其他经过配置几乎可以0丢失,

RabbitMq有单机模式,普通集群模式,镜像集群模式,每台机器上存储着全量的数据。

RabbitMQ的应用场景

1、服务解耦

如果一个服务下面有几十甚至几百个对接服务,那么这个服务代码维护起来会比较费力,造成这个现象的原因是耦合度太高了,如果使用rabbitMQ解耦,下游服务如果需要数据,自行从消息服务器订阅消息,不再需要数据时则取消订阅即可。

2、流量削峰

如果一个服务平时访问量不多,偶尔访问量会暴增到单台服务器无法处理,这种情况就可以使用RabbitMQ来进行流量削峰,减轻瞬时压力。

3、异步调用

比如秒杀系统,用户并不关心自己的订单号是否会立即返回,用户只关心自己是否成功抢购,所以对于生成订单号,减少库存等操作我们可以通过异步处理订单将数据写入数据库。

RabbitMQ安装

由于使用docker启动Rabbitmq十分便捷,这里就不再叙述其他方法了。

1、拉取最新版镜像(rabbitmq:management中有管理界面)

docker pull rabbitmq:management

 2、关闭,禁用防火墙,重启 docker 系统服务

systemctl stop firewalld
systemctl disable firewalld
systemctl restart docker

3、创建目录 

mkdir /etc/rabbitmq

 4、创建配置文件,并进入编辑状态

vim /etc/rabbitmq/rabbitmq.conf

5、写入用户名与密码(配置文件及路径一会启动容器用,用户名密码登录时用) 

default_user = zly
default_pass = zly

6、启动Rabbitmq

-d:后台运行容器。
--name:指定容器名。
-p:指定服务运行的端口(5672:应用访问端口;15672:控制台端口号)。
-v:映射目录或文件。
-e:指定环境变量
docker run -d --name rabbit \
-p 5672:5672 \
-p 15672:15672 \
-v /etc/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-e RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf \
--restart=always \
rabbitmq:management

访问15672端口,输入之前设置的用户名与密码就可以访问了(5672是集成到spring中写配置里的)

 

RabbitMQ工作模式

大家可以点击到官网查看RabbitMQ Tutorials — RabbitMQ

sprngboot集成RabbitMQ

1.pom依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

2.配置文件(conf.properties)

host需要根据实际情况修改

username和password是前面自己写的

spring.application.name=spirng-boot-rabbitmq
spring.rabbitmq.host=192.168.126.128
spring.rabbitmq.port=5672
spring.rabbitmq.username=zly
spring.rabbitmq.password=zly

3.测试

1.配置类

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

@Configuration
public class RabbitMqConfig {
    @Bean
    public Queue Queue1() {
        return new Queue("zly");
    }

}

2.接口

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;

@RestController
public class SendController {
    @Autowired
    private AmqpTemplate amqpTemplate;

    @RequestMapping("/send")
    public String send(){
        String content="Date:"+new Date();
        amqpTemplate.convertAndSend("zly",content);
        return content;
    }
}

3.监听

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

@Component
@RabbitListener(queues = "zly")
public class Receiver1 {
    private static final Logger logger = LoggerFactory.getLogger(Receiver1.class);
    @RabbitHandler
    public void receiver(String msg){
        logger.debug("zly:"+msg);
    }
}

访问接口可以看到消息率在随之变化。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值