消息队列

✍ dations ◷ 2024-09-20 13:53:40 #数据结构,协同控制,并发计算,Unix,进程间通信

在计算机科学中,消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列交互。消息会保存在队列中,直到接收者取回它。

一个 WIMP 环境像是 Microsoft Windows,借由优先的某些形式(通常是事件的时间或是重要性的顺序)来存储用户产生的事件到一个 事件贮列 中。系统把每个事件从事件贮列中传递给目标的应用程序。

实际上,消息队列常常保存在链表结构中。拥有权限的进程可以向消息队列中写入或读取消息。

目前,有很多消息队列有很多开源的实现,包括JBoss Messaging、JORAM、Apache ActiveMQ、Sun Open Message Queue、RabbitMQ、IBM MQ、Apache Qpid、Apache RocketMQ和HTTPSQS。

消息队列本身是异步的,它允许接收者在消息发送很长时间后再取回消息,这和大多数通信协议是不同的。例如WWW中使用的HTTP协议(HTTP/2之前)是同步的,因为客户端在发出请求后必须等待服务器回应。然而,很多情况下我们需要异步的通信协议。比如,一个进程通知另一个进程发生了一个事件,但不需要等待回应。但消息队列的异步特点,也造成了一个缺点,就是接收者必须轮询消息队列,才能收到最近的消息。

和信号相比,消息队列能够传递更多的信息。与管道相比,消息队列提供了有格式的数据,这可以减少开发人员的工作量。但消息队列仍然有大小限制。

消息队列除了可以当不同线程或进程间的缓冲外,更可以透过消息队列当前消息数量来侦测接收线程或进程性能是否有问题。

相关

  • 格言格言又称箴言,可以作为人们行为规范的言简意赅的语句,因其不仅凝聚古圣先贤的人生智慧,同时具备简练生动的表达方式。从句法结构角度说,格言是相对完整、相对独立的句子,可以独立
  • 分子模型数据库分子模型数据库(英语:Molecular Modeling Database,MMDB)是一个实验测定的生物大分子的三维立体结构数据库,由美国国家生物技术信息中心运营。
  • 戴维·阿滕伯勒大卫·弗雷德里克·阿滕伯勒爵士OM CH CVO CBE FRS FZS FSA(英语:Society of Antiquaries of London)(英语:Sir David Frederick Attenborough,/ˈætənbərə/,1926年5月8日-),生于
  • 内太阳系太阳系是一个受太阳引力约束在一起的行星系统,包括太阳以及直接或间接围绕太阳运动的天体。在直接围绕太阳运动的天体中,最大的八颗被称为行星,其余的天体要比行星小很多,比如矮
  • 行政院卫生福利部卫生福利部(简称卫福部)是中华民国有关公共卫生、医疗与社会福利事务的最高主管机关,同时监督各县市政府卫生局(处)、社会局(处)。其前身为1971年成立的“行政院卫生署”,2013年改制
  • 阿尔伯特·塔克阿尔伯特·塔克(英语:Albert William Tucker,1905年11月28日-1995年1月25日),加拿大人,1905年出生于加拿大,1928年获得多伦多大学学士,1932年获得普林斯顿大学博士,博士导师是所罗门·
  • 卫生设施卫生设施,是指涉及公共卫生及环境卫生(英语:Environmental health)的设施,包括净化饮用水和对人类粪便进行适当处理和处置,也包括排污(英语:Sewage)。避免人与粪便接触是卫生设施的主
  • 倍他米隆倍他米隆 (其国际非专利药品名称为“”) 也称为“ -苯甲酰基-β-丙氨酸”或“贝它米龙”,是一种常与抗生素帕尼培南以1:1的比例合用的化合物。倍他米隆能竞争性抑制帕尼培南
  • 佐仓薰佐仓薰(1990年9月29日-)是日本的女性声优,山口县出身。remax所属。血型A型。在玩过《恐怖惊魂夜》后开始对声优产生兴趣。国中时加入广播社,高中则加入射箭社。2011年被魔法气泡
  • 寺田拓哉寺田拓哉(日语:寺田拓哉/てらだ たくや ,韩语:테라다 타쿠야, 1992年3月18日-),日籍在韩发展男演员、模特儿,曾是男子音乐团体CROSS GENE的日本成员。与SHIN(2015年7月~2016年4月)