PHP之RabbitMQ笔记

打印 上一主题 下一主题

主题 2038|帖子 2038|积分 6114

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:假造主机

数据隔离



  • 假造主机
  • 自己创建假造主机,自己去创建假造主机 就是被隔脱离来,自己就是存在自己的假造主机了
设置能者多劳 work模型



  • prefetch:1 设置能者多劳,每次取出一条消息,处置处罚完成才能获取下一个消息
  • 怎样处置处罚消息堆积问题:绑定多个消耗者,加快消息处置处罚的速度,优化自己的业务代码,缓存,异步等等。
  • 可以在一个队列上绑定多个消耗者
  • 怎么处置处罚消息堆积?利用多个消耗者,优化代码
Fanout互换机



  • Fanout:广播
  • Direct:定向
  • Topic:话题
  • Fanout互换机会将接收到的数据广播到每一个queue,所以可以叫广播模式
  • 取名创建队列:fanout.queue1
Direct互换机



  • 会根据一定的规则路由到指定的Queue
  • 队列绑定BindingKye
  • 发布者指定消息的RoutingKey

Topic互换机



  • 和direct互换机很像,不过可以匹配多个的

队列和互换机的声明



  • 可以利用代码去创建queue互换机
消息转换器



  • 发送一个对象类型的
高级篇

可靠性问题

发送者可靠性



  • 生产者重连

  • 生产者确认


  • correlated:就是必要编写回调函数
MQ端消息丢失



  • 数据持久化
  • 互换机持久化 durable
  • LazyQuene:接收到消息直接写入磁盘,全部的版本都是lazyQuene
  • pageout 直接写入磁盘
消耗者端数据安全



  • 消耗者确认机制

  • 消耗者自动去告诉mq 消息处置处罚成功
消息的失败处置处罚策略



  • 当数据出现问题,不告诉mq 而是在本地无穷的去重试,记录当前的业务的状态
  • 重试多次依旧失败 处置处罚-直接拒绝,重新入队,重新发送消息(消息处置处罚失败,发送到指定的互换机)
业务的幂等性



  • 一个消息会被处置处罚多次 消耗者重复消耗,业务要做到幂等性
  • 怎样包管业务的幂等性—利用令牌的方式来执行表单的提交,就能判定表单是否重复提交,给消息加上一个消息的唯一id
  • 办理方案:判定id
  • 基于业务逻辑的判定,修改状态,直接在业务上把数据处置处罚,where id = 1
  • 删除操纵不存在幂等性
延迟消息



  • 生产者发送会指定一个时间,指定时间之后消耗者就是归去处置处罚
  • 付出超时时间,(可以利用定时使命去处置处罚,当然如今也是可以利用rabbitmq,延迟消息)
  • 下单后不付款,然后让这个30分钟去处置处罚这个业务,然后就可以实现业务的实现,利用延时消息就可以办理
死信互换机

只要满足其中之一个条件

延时消息插件



  • 对互换机举行改造,就会存储时间
  • 安装插件
  • 然后去利用

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表