动力节点RabbitMQ教程|12小时学会rabbitmq消息中间件
总时长 12:20:00 共65P
此文章包含第45p-第p57的内容
备用交换机
交换机参数
只有一个 alternate exchange
队列参数 有很多 如下
alternate exchange
路由写错了的话, 没有进入到队列的消息
第一种解决方法 记录到日志
第二种解决方法 没有进入到队列的消息 都进入到默认交换机
备用交换机用扇形交换机 好处:不用设置路由就可以进入队列
备用交换机的消费者可以绑定 手机 短信 钉钉等 进行提醒 程序出问题了才会进入
设置了备用交换机 会有 AE
队列的详细属性
队列类型一般都选经典,其他两种是扩展类型 一般不使用
名称,是否持久化,是否是排他队列,是否自动删除
两个信道 一个发送 一个接收 因为在一个程序里所以端口相同
详细参数
溢出 后的处理情况
溢出行为默认是删除头部、
这里改成拒绝发布
最大长度5
x-overflow 拒绝发布
单一消费者
如果队列存在 则改了参数之后再创建不可能创建成功 需要删除后再进行创建
启动单一消费者前
启动单一消费者后
消息队列容量
优先级队列 (了解即可 一般没有这样的需求 除非会员插队这些 基本用不上)
数值越大 可以插队
根据优先级进行插队 不能设置消费者 否则消费完了没必要插队了
其他属性 熟悉即可
懒队列
持久化是 内存里有 我再存磁盘一份
这个懒队列是 只在磁盘里存 内存不存信息 会很慢 不推荐
总结
1那里 设置confirm
2那里 设置return 或设置备用交换机
3那里设置三个持久化来进行可靠性
4 消费者的自动确认改成手动确认
persistent 持久化
集群可以防止单点故障
总结 confirm
查看rabbit命令
在环境变量里 所以都可以用
启用的插件
使用//TODO 可以在下面直接找到 计划要写的地方
总结return
- 开启发布者return模式
2.编写returnCallback,并引入进rabbitTemplate.setReturnsCallback
- 写个错误的路由key进行验证
保持持久化
队列持久化
队列默认也是持久化的
交换机持久化
交换机的持久化默认就是true
消息持久化
设置 messageProperties的 deliveryMode 为 MessageDeliveryMode.PERSISTENT
也可以不设置 因为消息也是默认就是持久化的
集群 后期再讲
确保消息正确的投递到消费者
启用手动ack确认机制
未确认
Channel勿导错包
没有问题时 basic Ack 手动确认
有问题时 basic Nack 并且重新入队
这时 如果前方代码报错 如果重新入队后 会一直报错 死循环
幂等性
数据库四种操作 select update insert delete 只有 insert 是非幂等的
http四种方法 get(查询) post(插入) put(修改) delete(删除) 只有post是非幂等的
查看redis
启动redis
默认使用0号数据库
@Data 创建get set 方法
@AllArgsConstructor创建所有参数的构造方法
@NoArgsConstructor创建没有参数的构造方法
@Builder 创建建造者模式
序列化 把对象转成字节串或字节数组 反序列化 转换回去
最好转成json字符串进行发送 因为 发送消息和接收消息的可能是两个程序 如果发送对象 需要对方有一个一模一样的对象进行接收 而且连包名都一样
接收消息
引入redis 并且刷新
配置
使用springboot的自动装配
只插入一次