springboot整合rabbitmq

83 阅读2分钟

springboot整合rabbitmq

为什么使用rabbitmq消息队列?

应用场景:

可以处理异步通信,应用解耦,流量削峰,

1异步通信

例如异步通信,用户注册完毕后把注册的信息传入到数据库后,发送一个消息给消息队列,监听消息队列有消息就可以发送邮件任务来异步执行。

2应用解耦

下订单的时候,需要减库存,这时可以拆分为两个服务来处理,下完订单发送消息到消息队列,之后库存系统监听队列进行消费减库存。

3流量晓峰

秒杀设计,用户10万请求,但我只有1万件商品,那我就可以在消息队列中设定只有1万的定长,当满了之后,后面的多的请求就直接返回秒杀失败。

先使用docker安装rabbitmq

docker pull rabbitmq:3.8.9-management

运行镜像

docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 263c941f71ea

查看运行的容器

测试访问

默认账号密码 guest guest登录

测试发送消息消费

1.1创建交换机(点对点形式)

2添加队列

3交换机和队列进行绑定(改绑定关系的路由键是lzc)

4接下来发送的消息测试的路由键我也设置为lzc

5查看消息

已接受到消息

收到消息

1.2创建交换机(发布订阅形式)

两者区别:点对点就是当消息被消费方接收之后消费后,其他的消费者就不可能再收到了,发布订阅就是所有的消费者都可以收到消息。

还有topic模式,该模式就是根据路由键来决定把消息发送给哪个消费者。

springboot整合使用

1引入依赖

2配置地址,其他的用户名密码那些默认也可以

3测试使用 发送消息

得到消息,默认使用的java的序列化机制

4接收消息

发现接收之后队列里的消息就没有了

5改变序列化的机制 以json机制返回出去

再测试

发现消息是以json格式的了

6基于注解的方式接收消息

开启

测试 当项目启动时执行改方法