rabbitMQ常用方法说明 – 6中工作模式及关键点

首先,RabbitMQ解决什么问题?

1)信息的发送者和接收者如何维持连接,如果一方的连接中断,这期间的数据如何防止丢失?

2)如何降低发送者和接收者的耦合度?

3)如何让Priority高的接收者先接到数据?

4)如何做到load balance?有效均衡接收者的负载?

5)如何有效的将数据发送到相关的接收者?也就是说接收者subscribe 不同的数据,如何做有效的filter。

6)如何做到可扩展,甚至将这个通信模块发到cluster上?

7)如何保证接收者接收到了完整,正确的数据?

那么消息队列可以起到一个缓存的作用,先把工作记录下,然后尽自己最大努力进行读取.(具体功能请自行百度)

关键词

  1. Queue
    指具体某一个队列
  2. RouteKey
    路由和交换机在进行绑定时,定义一个路由名
  3. Exchange
    交换机,用于把生产者的消息根据不同工作方式分发到不同队列中.
  4. Publish
    消息发送者
  5. Consume
    消息接收者
  6. Message
    消息本身

6种主要工作模式

  1. HelloWorld
    这种方式是最简单的一个应用,P为生产方,C为接收方.如果班级里边只有我一个人,和一个老师可以看成是这种模式.那么队列呢..就是我手里的iphone吧.照着手机拍的内容先埋头写..
  2. Work queues 工作队列
    老师让两个学生帮忙跟着一起批作业.
  3. Publish/Subscribe 发布订阅模式
    可以看成如果说班级里边的人一起在抄黑板.可以看成这种模式.每个人得到的结果一样.
    老师只关注去写,不需要关注谁没有抄.这个是由学生去主动关注(绑定)的
    此方式实际上也可以看做是设计模式中观察者模式的分布式实现.
    同时因为这种方式导致了生产者与具体队列接耦.所以需要额外增加一个交换机
  4. Routing 路由方式
    老师批了不同课程的作业,并一起交给了班长,说根据课程发给课代表.再让课代表发给具体学生.
    那么老师是生产者,班长根据老师持续给的不同的作业本发给不同的课代表,班长即代表了Exchange,而课代表要发的作业则是具体的Queue.当然也可以某一个人是多个课程的课代表.
  5. Topics 主题方式
    期中考试,老师公布了所有人的考试试卷情况,有优良差三等,以及不同的课程.所以试卷的标题写的为"语文.差"."数学.优"..这样.同时安排一个人,对成绩为查的进行辅导,同时所有专业的成绩.也要通知课代表.即.一个消息可以通过.间隔,含有多重属性.不同的队列可以对特别属性做关注.比如进行辅导的人关注的关键字为**"*.差"** 而对于课代表来说.可能关心的是**"语文.*"**
  6. RPC 远程调用
    校长找个学生说去找下语文老师,让来校长室.我等着他.也就相当于发起了一个任务队列.并且发起者会等待.
    学生去办公室找了结果发现没人(消费端处理失败),等了一会人来了.并把老师带到了校长室.在这个期间校长一直在等,即便中途学生没找成功.
    在常规的RPC调用中,都是使用的单次链接,如果目标失败,则RPC失败,而使用MQ,目标失败, 可以从新领取RPC任务从新处理.在此期间RCP调用端一直阻塞

关于使用MQ的4个关键点

    1. 由于消息队列实现了顺序性,和可到达性.所以我们基于此设计就比较稳定
      之前的远程调用实现方式是采用数据库,并进行超时计数,问题在于有一些API必须先执行,比如推荐人的注册.但是因为超时机制的设计,可能会出现后执行问题.同时达到超时计数之后.就不在发送,可到达性就无从谈起.至于数据库对接么.即便是在一个机房甚至一台服务器上.对接时如果存在锁表.或者系统繁忙.也会导致对接失败.属于同步执行.而非异步执行.如果服务端距离比较远的话..那么网络的不稳定性.同时也不存在重发机制也会导致SQL执行出现问题.
    2. 效率问题,之前的对接方式,是实现通过数据库记录进行处理.并通过1秒执行一次定时任务进行查询.结果带来问题是某些项目的服务器一半以上的资源都在处理API表的查询工作.同时API的对接响应时间,也降低到0-1秒之间.
      MQ带来的好处在于他是一种基于TCP/IP的通讯方式,发送即收到.
    3. 拉上WorkerMan的原因.作为消息队列的消费端.需要时刻收取最新发来的消息并做处理.所以执行方式类似于一个服务端程序而不是一个定时的web脚本.而WorkerMan的作用就是把PHP变成应用程序.
    4. WorkerMan+PHP+rebbitMQ作为处理端,因我们的程序设计是基于Tp.所以希望能够让WorkerMan直接调用Model进行具体处理.如果中间在加一层CLI调用.就有点多余.

原文地址:https://www.cnblogs.com/Jeely/p/10784162.html

时间: 2024-10-14 07:06:54

rabbitMQ常用方法说明 – 6中工作模式及关键点的相关文章

STM32中IO口的8中工作模式

该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.         推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小.效率高.输出既可以向负载灌电流,也

LVS原理详解(3种工作模式及8种调度算法)

2017年1月12日, 星期四 LVS原理详解(3种工作模式及8种调度算法) LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) 作者:woshiliwentong  发布日期:2014-01-06 09:31:20 一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集

RabbitMQ五种工作模式学习总结

一.简介最近,在看一些消息中间件的内容,之前都没有好好学习一下消息中间件.本文将对RabbitMQ中五种常用的工作模式做一个简单的介绍和总结.RabbitMQ常用的工作模式有:简单队列模式.工作队列模式.发布订阅模式.路由模式.主题模式.本文参照RabbitMQ官网示例总结,详细可以到官网查看:https://www.rabbitmq.com/getstarted.html. 二.简单队列模式(Simple Queue) [a]模型图:只包含一个生产者以及一个消费者,生产者Producer将消息

嵌入式中 ARM的几种工作模式 以及异常模式的优先级

一.Arm工作模式: Arm微处理器支持7种工作模式,分别为: 1. 用户模式(Usr)            用于正常执行程序 2. 快速中断模式(FIQ)    用于高速数据传输 3. 外部中断模式(IRQ)   用于通常的中断处理 4. 管理模式(SVC)          操作系统使用的保护模式(高权限),复位和软件中断进入 5. 数据访问终止模式(abt)   当数据或指令预取终止时进入该模式,可用于虚拟内存及存储保护 6. 系统模式(sys)            运行均有特权的操作

Apache服务器中prefork和worker工作模式

一.多道处理模块MPM介绍 Apache HTTP 服务器被设计为一个功能强大,并且灵活的 web 服务器, 可以在很多平台与环境中工作.不同平台和不同的环境往往需要不同 的特性,或可能以不同的方式实现相同的特性最有效率.Apache 通过模块化的设计来适应各种环境.这种设计允许网站管理员通过在 编译时或运行时,选择哪些模块将会加载在服务器中,来选择服务器特性.        Apache 2.0 扩展此模块化设计到最基本的 web 服务器功能. 它提供了可以选择的多处理模块(MPM),用来绑定

Linux中文本编辑器三种工作模式切换及vi编辑器三种工作模式下命令详解

文本编辑器的作用 创建或修改文本文件维护Linux系统中的各种配置文件Linux中最常用的文本编辑器Linux中最常用的文本编辑器vi:类UNIX操作系统的默认文本编辑器vim:vim时vi文本编辑器(一般简称vi编辑器)的增强版本 vi编辑器的工作模式 三种工作模式命令模式.输入模式.末行模式不同模式之间的切换 命令模式的基本操作3-1 光标移动方向键移动(↑.↓.←.→) 功能:上下左右移动Page Down或Ctrl+F 功能:向下翻动一整页的内容Page Up或Ctrl+B 功能:向上翻

LVS调度器中NAT工作模式实验

LVS群集创建与管理使用ipvsadm工具Network File System,网络文件系统 依赖于RPC(远端过程调用) 需要安装nfs-utils.rpcbind软件包 系统服务:nfs.rpcbind 共享配置文件:/etc/exports案例环境 LVS调度器作为web服务器池的网关,LVS两块网卡,分别连接内外网,使用轮询(rr)调度算法实验案例图实验过程一.配置NFS存储服务器,提供存储空间1.首先为nfs服务器添加两块硬盘2.添加硬盘后重启服务器3.为每台服务器修改主机名,方便识

rabbitmq的五种工作模式

abbitmq的五种工作模式 原文地址:https://www.cnblogs.com/Jeely/p/10784172.html

apache 工作模式

我主要来说一下prefork和worker工作模式.      prefork的工作原理 如果不用"--with-mpm"显式指定 某种MPM,prefork就是Unix平台上缺省的MPM.它所采用的预派生子进程方式也是Apache1.3中采用的模式.prefork本身并没有 使用到线程,2.0版使用它是为了与1.3版保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为 最稳定的MPM之一. prefork的工作原理是,控制进程在最 初