RabbitMQ(007 消息可靠性part2)

动力节点RabbitMQ教程|12小时学会rabbitmq消息中间件

总时长 12:20:00 共65P

此文章包含第45p-第p57的内容


备用交换机

交换机参数

只有一个 alternate exchange
RabbitMQ(007 消息可靠性part2)_第1张图片

队列参数 有很多 如下
RabbitMQ(007 消息可靠性part2)_第2张图片

alternate exchange

路由写错了的话, 没有进入到队列的消息
第一种解决方法 记录到日志
第二种解决方法 没有进入到队列的消息 都进入到默认交换机

RabbitMQ(007 消息可靠性part2)_第3张图片

备用交换机用扇形交换机 好处:不用设置路由就可以进入队列
RabbitMQ(007 消息可靠性part2)_第4张图片

备用交换机的消费者可以绑定 手机 短信 钉钉等 进行提醒 程序出问题了才会进入
RabbitMQ(007 消息可靠性part2)_第5张图片

RabbitMQ(007 消息可靠性part2)_第6张图片

RabbitMQ(007 消息可靠性part2)_第7张图片

设置了备用交换机 会有 AE
RabbitMQ(007 消息可靠性part2)_第8张图片

RabbitMQ(007 消息可靠性part2)_第9张图片

RabbitMQ(007 消息可靠性part2)_第10张图片

队列的详细属性

队列类型一般都选经典,其他两种是扩展类型 一般不使用
RabbitMQ(007 消息可靠性part2)_第11张图片

名称,是否持久化,是否是排他队列,是否自动删除
RabbitMQ(007 消息可靠性part2)_第12张图片

RabbitMQ(007 消息可靠性part2)_第13张图片
两个信道 一个发送 一个接收 因为在一个程序里所以端口相同
RabbitMQ(007 消息可靠性part2)_第14张图片

详细参数

RabbitMQ(007 消息可靠性part2)_第15张图片

溢出 后的处理情况

RabbitMQ(007 消息可靠性part2)_第16张图片

溢出行为默认是删除头部、
这里改成拒绝发布

RabbitMQ(007 消息可靠性part2)_第17张图片RabbitMQ(007 消息可靠性part2)_第18张图片

最大长度5
RabbitMQ(007 消息可靠性part2)_第19张图片

x-overflow 拒绝发布
RabbitMQ(007 消息可靠性part2)_第20张图片

单一消费者

如果队列存在 则改了参数之后再创建不可能创建成功 需要删除后再进行创建

RabbitMQ(007 消息可靠性part2)_第21张图片

RabbitMQ(007 消息可靠性part2)_第22张图片

启动单一消费者前

启动单一消费者后

消息队列容量

RabbitMQ(007 消息可靠性part2)_第23张图片

优先级队列 (了解即可 一般没有这样的需求 除非会员插队这些 基本用不上)

数值越大 可以插队
RabbitMQ(007 消息可靠性part2)_第24张图片

在这里插入图片描述

RabbitMQ(007 消息可靠性part2)_第25张图片
RabbitMQ(007 消息可靠性part2)_第26张图片

RabbitMQ(007 消息可靠性part2)_第27张图片

根据优先级进行插队 不能设置消费者 否则消费完了没必要插队了
RabbitMQ(007 消息可靠性part2)_第28张图片

其他属性 熟悉即可

懒队列
RabbitMQ(007 消息可靠性part2)_第29张图片
持久化是 内存里有 我再存磁盘一份
这个懒队列是 只在磁盘里存 内存不存信息 会很慢 不推荐

总结

RabbitMQ(007 消息可靠性part2)_第30张图片

1那里 设置confirm
2那里 设置return 或设置备用交换机
3那里设置三个持久化来进行可靠性
4 消费者的自动确认改成手动确认
RabbitMQ(007 消息可靠性part2)_第31张图片
RabbitMQ(007 消息可靠性part2)_第32张图片
RabbitMQ(007 消息可靠性part2)_第33张图片

persistent 持久化
RabbitMQ(007 消息可靠性part2)_第34张图片

集群可以防止单点故障
RabbitMQ(007 消息可靠性part2)_第35张图片

RabbitMQ(007 消息可靠性part2)_第36张图片

总结 confirm

RabbitMQ(007 消息可靠性part2)_第37张图片

查看rabbit命令
RabbitMQ(007 消息可靠性part2)_第38张图片

在环境变量里 所以都可以用
RabbitMQ(007 消息可靠性part2)_第39张图片

RabbitMQ(007 消息可靠性part2)_第40张图片

RabbitMQ(007 消息可靠性part2)_第41张图片
启用的插件
RabbitMQ(007 消息可靠性part2)_第42张图片

RabbitMQ(007 消息可靠性part2)_第43张图片
RabbitMQ(007 消息可靠性part2)_第44张图片

使用//TODO 可以在下面直接找到 计划要写的地方
RabbitMQ(007 消息可靠性part2)_第45张图片

RabbitMQ(007 消息可靠性part2)_第46张图片

总结return
  1. 开启发布者return模式
    RabbitMQ(007 消息可靠性part2)_第47张图片
    2.编写returnCallback,并引入进rabbitTemplate.setReturnsCallback
    RabbitMQ(007 消息可靠性part2)_第48张图片
  2. 写个错误的路由key进行验证
    RabbitMQ(007 消息可靠性part2)_第49张图片

RabbitMQ(007 消息可靠性part2)_第50张图片

保持持久化

RabbitMQ(007 消息可靠性part2)_第51张图片

队列持久化

RabbitMQ(007 消息可靠性part2)_第52张图片

队列默认也是持久化的
RabbitMQ(007 消息可靠性part2)_第53张图片

交换机持久化

RabbitMQ(007 消息可靠性part2)_第54张图片

交换机的持久化默认就是true
RabbitMQ(007 消息可靠性part2)_第55张图片

消息持久化

设置 messageProperties的 deliveryMode 为 MessageDeliveryMode.PERSISTENT
RabbitMQ(007 消息可靠性part2)_第56张图片
RabbitMQ(007 消息可靠性part2)_第57张图片

也可以不设置 因为消息也是默认就是持久化的
RabbitMQ(007 消息可靠性part2)_第58张图片

集群 后期再讲

RabbitMQ(007 消息可靠性part2)_第59张图片

确保消息正确的投递到消费者

启用手动ack确认机制
RabbitMQ(007 消息可靠性part2)_第60张图片

RabbitMQ(007 消息可靠性part2)_第61张图片
未确认
RabbitMQ(007 消息可靠性part2)_第62张图片

Channel勿导错包


没有问题时 basic Ack 手动确认

有问题时 basic Nack 并且重新入队
RabbitMQ(007 消息可靠性part2)_第63张图片

这时 如果前方代码报错 如果重新入队后 会一直报错 死循环

幂等性

RabbitMQ(007 消息可靠性part2)_第64张图片

数据库四种操作 select update insert delete 只有 insert 是非幂等的
http四种方法 get(查询) post(插入) put(修改) delete(删除) 只有post是非幂等的
RabbitMQ(007 消息可靠性part2)_第65张图片

RabbitMQ(007 消息可靠性part2)_第66张图片

RabbitMQ(007 消息可靠性part2)_第67张图片

查看redis
RabbitMQ(007 消息可靠性part2)_第68张图片
启动redis
RabbitMQ(007 消息可靠性part2)_第69张图片
RabbitMQ(007 消息可靠性part2)_第70张图片
默认使用0号数据库
RabbitMQ(007 消息可靠性part2)_第71张图片

@Data 创建get set 方法
@AllArgsConstructor创建所有参数的构造方法
@NoArgsConstructor创建没有参数的构造方法
@Builder 创建建造者模式
RabbitMQ(007 消息可靠性part2)_第72张图片

RabbitMQ(007 消息可靠性part2)_第73张图片

序列化 把对象转成字节串或字节数组 反序列化 转换回去

RabbitMQ(007 消息可靠性part2)_第74张图片


最好转成json字符串进行发送 因为 发送消息和接收消息的可能是两个程序 如果发送对象 需要对方有一个一模一样的对象进行接收 而且连包名都一样
接收消息

RabbitMQ(007 消息可靠性part2)_第75张图片
RabbitMQ(007 消息可靠性part2)_第76张图片

引入redis 并且刷新

配置
RabbitMQ(007 消息可靠性part2)_第77张图片
使用springboot的自动装配



只插入一次

RabbitMQ(007 消息可靠性part2)_第78张图片


你可能感兴趣的:(rabbitMQ,rabbitmq,分布式)