PHP之RabbitMQ笔记
RabbbitMQ安装
·
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
docker run -d --hostname my-rabbit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=qwer1234 -p 15672:15672 -p 5672:5672 rabbitmq:management
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management
·
基本介绍
[*]publlisher:消息发送者
[*]consumer:消息的消耗者
[*]queue:队列,存储消息
[*]exchange:互换机,负责路由消息,和转发,没有存储功能
[*]virtual-host:假造主机
https://i-blog.csdnimg.cn/direct/07bda0d6e82444ebb91be5e70fb7ed6a.png
数据隔离
[*]假造主机
[*]自己创建假造主机,自己去创建假造主机 就是被隔脱离来,自己就是存在自己的假造主机了
设置能者多劳 work模型
[*]prefetch:1 设置能者多劳,每次取出一条消息,处置处罚完成才能获取下一个消息
[*]怎样处置处罚消息堆积问题:绑定多个消耗者,加快消息处置处罚的速度,优化自己的业务代码,缓存,异步等等。
[*]可以在一个队列上绑定多个消耗者
[*]怎么处置处罚消息堆积?利用多个消耗者,优化代码
Fanout互换机
[*] Fanout:广播
[*] Direct:定向
[*] Topic:话题
[*] Fanout互换机会将接收到的数据广播到每一个queue,所以可以叫广播模式
[*] 取名创建队列:fanout.queue1
Direct互换机
[*]会根据一定的规则路由到指定的Queue
[*]队列绑定BindingKye
[*]发布者指定消息的RoutingKey
https://i-blog.csdnimg.cn/direct/ef2ef268b2b14736b32a41d29e709da1.png
Topic互换机
[*]和direct互换机很像,不过可以匹配多个的
https://i-blog.csdnimg.cn/direct/99a17d1b60df42249ea1fd9738b738f2.png
队列和互换机的声明
[*]可以利用代码去创建queue互换机
消息转换器
[*]发送一个对象类型的
高级篇
可靠性问题
发送者可靠性
[*]生产者重连
https://i-blog.csdnimg.cn/direct/af13e60add3d463698f251f5f9a3529d.png
[*]生产者确认
https://i-blog.csdnimg.cn/direct/8fc957eb627142e1bcc934b01231f5c2.png
https://i-blog.csdnimg.cn/direct/3de380c2660f481793ab318172a22e52.png
[*]correlated:就是必要编写回调函数
MQ端消息丢失
[*]数据持久化
[*]互换机持久化 durable
[*]LazyQuene:接收到消息直接写入磁盘,全部的版本都是lazyQuene
[*]pageout 直接写入磁盘
消耗者端数据安全
[*]消耗者确认机制
https://i-blog.csdnimg.cn/direct/dd61bab63d37466cbf0d3a79b80ca319.png
[*]消耗者自动去告诉mq 消息处置处罚成功
消息的失败处置处罚策略
[*]当数据出现问题,不告诉mq 而是在本地无穷的去重试,记录当前的业务的状态
[*]重试多次依旧失败 处置处罚-直接拒绝,重新入队,重新发送消息(消息处置处罚失败,发送到指定的互换机)
业务的幂等性
[*]一个消息会被处置处罚多次 消耗者重复消耗,业务要做到幂等性
[*]怎样包管业务的幂等性—利用令牌的方式来执行表单的提交,就能判定表单是否重复提交,给消息加上一个消息的唯一id
[*]办理方案:判定id
[*]基于业务逻辑的判定,修改状态,直接在业务上把数据处置处罚,where id = 1
[*]删除操纵不存在幂等性
延迟消息
[*]生产者发送会指定一个时间,指定时间之后消耗者就是归去处置处罚
[*]付出超时时间,(可以利用定时使命去处置处罚,当然如今也是可以利用rabbitmq,延迟消息)
[*]下单后不付款,然后让这个30分钟去处置处罚这个业务,然后就可以实现业务的实现,利用延时消息就可以办理
死信互换机
只要满足其中之一个条件
https://i-blog.csdnimg.cn/direct/d215cba338044c0fa8b5db0959a925df.png
延时消息插件
[*]对互换机举行改造,就会存储时间
[*]安装插件
[*]然后去利用
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]