Rabbit MQ

Rabbit MQ

 

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

安装登陆完以后,进入后台界面:

Rabbit MQ

 

 创建新工程,完成与mq的联动操作:

pom:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 先写生产者代码:

Rabbit MQ

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 运行:

Rabbit MQ

 

 再写消费者的代码:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

 再做点修改:

只接受消息的消息体:

Rabbit MQ

 

 运行:

Rabbit MQ

 

 ===========

Rabbit MQ

 

 Rabbit MQ

 

 抽取工具类:

Rabbit MQ

 

 

写两个工作线程:

Rabbit MQ

 

 

Rabbit MQ

 

 

在idea中设置一个类可以多线程运行:

Rabbit MQ

 

 两个都运行起来:

Rabbit MQ

 

 ===

写生产者:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 运行:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 ==========

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 ====Rabbit MQ

 

 Rabbit MQ

 

 

Rabbit MQ

 

 写新的生产者和消费者,设定成手动应答:

Rabbit MQ

 

 Rabbit MQ

 先写个工具类:

Rabbit MQ

 

 

编写消费者:

Rabbit MQ

 

 Rabbit MQ

 

 另一个消费者只要修改下沉睡时间和信息就可以:

Rabbit MQ

 

 运行:

Rabbit MQ

 

因为worker4等待时间较长,所以如果在发送消息,需要worker4来接受时,如果worker4还没收到消息,就宕机了,那消息就会被worker3接收到。这就完成了手动应答。

============

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

 Rabbit MQ

 

 

Rabbit MQ

 

 

改成不公平分发原理:

Rabbit MQ

 Rabbit MQ

 

 由于C2等待时间较长,所以基本都是由C1来接受消息。

=========

欲取值的设定:

Rabbit MQ

 

 Rabbit MQ

 

 ===

要做到消息不丢失,要做到三步,除了队列和消息持久化,还要做发布确认:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 批量确认发布只有几行代码不一样:

Rabbit MQ

 

 Rabbit MQ

 

 异步发布确认消息:

Rabbit MQ

 

 Rabbit MQ

 Rabbit MQ

 

 修改代码:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 绑定演示:

在网页上添加一个队列:

Rabbit MQ

 

 再添加一个交换机:

Rabbit MQ

 

 把新添加的队列和新添加的交换机绑定:

Rabbit MQ

 

 Rabbit MQ

 

 发消息的过程:

Rabbit MQ

 

 Rabbit MQ

 

 fanout演示(广播,两个接收方,一个发送方):

Rabbit MQ

 

 Rabbit MQ

 

 

Rabbit MQ

 

 相同的代码再写一个,改下名称。

然后写生产者:

Rabbit MQ

 

 测试:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 直接交换机演示:

Rabbit MQ

 

 Rabbit MQ

 

 

Rabbit MQ

 

 第二个接收方的代码稍微改改:

Rabbit MQ

 

 

运行测试:

只有2号接收到:

Rabbit MQ

 

Rabbit MQ

 

 Rabbit MQ

 

 这样可以制定哪个接受者接收。

====

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 Rabbit MQ

 

 Rabbit MQ

 

 

Rabbit MQ

 

 主题交换机演示:

写消费者1:

Rabbit MQ

 

 Rabbit MQ

 

 编写消费者2,代码稍微改改就行:

Rabbit MQ

 

编写生产者:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 运行测试:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

 

死信队列演示:

消费者1:

Rabbit MQ

 

 Rabbit MQ

 

 

 

 

 

 

 

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 编写生产者:

 Rabbit MQ

 

 

消费者2:

Rabbit MQ

 

测试得出,超时的信息都会进入死信队列。

======

现在测试队列的最大长度,先把生产者中的超时时间去掉,然后在消费者1中添加队列长度:

Rabbit MQ

 

 修改了参数之后,要在网页上把原来的队列删除,再重新启动消费者1就没问题了:

Rabbit MQ

 

 把消费者1关掉,造成宕机,然后生产者发10个消息,因为队列最多只能挤压6个,所以还剩4个去到死信队列:

Rabbit MQ

 

 

===

演示消息被拒绝,进入死信队列:

Rabbit MQ

 

 

先把原来的普通队列删掉,在重启消费者1,然后启动生产者并发消息:

Rabbit MQ

 

 ========

延迟队列:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 利用springboot框架演示:

Rabbit MQ

 

 pom:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 配置文件:

Rabbit MQ

 

 Rabbit MQ

 

 创建一个配置类:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

 编写生产者:

Rabbit MQ

 

 Rabbit MQ

 

 消费者:

Rabbit MQ

 

 测试:

Rabbit MQ

 Rabbit MQ

 

 添加一个qc队列:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 在编写一个生产者发消息给qc:

Rabbit MQ

 

 

Rabbit MQ

 

 为了解决死信队列排队的问题,需要到官网下载一个插件:

Rabbit MQ

 

 Rabbit MQ

 

 然后重启rabbitmq:

Rabbit MQ

 

 到监控页面查看:

Rabbit MQ

 

 Rabbit MQ

 

 演示延迟交换机:

先写配置类:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 编写生产者:

Rabbit MQ

 

 消费者:

Rabbit MQ

 

 测试:

Rabbit MQ

 

 Rabbit MQ

 =============

Rabbit MQ

 

 先写一个完整的发消息流程,再演示交换机宕机的情况:

Rabbit MQ

 

 Rabbit MQ

 

 

生产者:

Rabbit MQ

 

 消费者:

Rabbit MQ

 

 测试:

Rabbit MQ

 

 

因为这是正常情况,所以没有问题,为了演示交换机宕机,先写一个交换机回调方法:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 给生产者补上点代码:

Rabbit MQ

 

 要让回调方法成功,还要改配置文件:

Rabbit MQ

 

 

 

Rabbit MQ

 

 测试,回调方法可以跑通:

Rabbit MQ

 

 

 演示交换机宕机:

先让生产者找不到交换机:

Rabbit MQ

 

 测试:Rabbit MQ

 

==============

Rabbit MQ

 

 如果队列出问题,就要添加回退接口,让无法送到队列的消息回退给生产者:

Rabbit MQ

 

 Rabbit MQ

 

 修改配置文件:

Rabbit MQ

 

 

测试:

故意写错routingkey:

Rabbit MQ

 

 注入:

Rabbit MQ

 

 测试,消息被退回:

Rabbit MQ

 

 

Rabbit MQ

 

 Rabbit MQ

 

 

添加备份交换机,备份队列,报警队列:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 给原来的交换机加上备份交换机:

Rabbit MQ

 

 

 创建报警消费者:

Rabbit MQ

 

 

如果修改了交换机的代码,就需要去监控页面把交换机删了,在重新加载一次。

 测试:

Rabbit MQ

 

 Rabbit MQ

 

 

 Rabbit MQ

 

 =======================

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 =============

Rabbit MQ

 

 

设置队列最大优先级(1-255):

Rabbit MQ

 

 

用代码设置:

Rabbit MQ

 

 给消息设置优先级:

Rabbit MQ

 

 

测试,先发消息,让消息都进入队列,然后启动消费者查看:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 可以在网页设置:

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

用模拟机克隆几个MQ:

Rabbit MQ

 

 查看id,然后连接:

Rabbit MQ

 

 Rabbit MQ

 

Rabbit MQ

 

 Rabbit MQ

 

 Rabbit MQ

 

 

Rabbit MQ

 

 

看视频P84。

 ===========

Rabbit MQ

 

 

Rabbit MQ

 

 Rabbit MQ

 

所以备份以后一个mq宕机以后也没关系:

 Rabbit MQ

 

 ====

Rabbit MQ

 

 Rabbit MQ

 

 ==============

Rabbit MQ

 

 Rabbit MQ

 

 视频P87

 

Rabbit MQ

 

 视频P91

 

上一篇:Docker升级重启容器报错Unknown runtime specified docker-run


下一篇:MySQL第三章——空值的处理