消息队列

✍ dations ◷ 2025-11-25 23:30:17 #数据结构,协同控制,并发计算,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之前)是同步的,因为客户端在发出请求后必须等待服务器回应。然而,很多情况下我们需要异步的通信协议。比如,一个进程通知另一个进程发生了一个事件,但不需要等待回应。但消息队列的异步特点,也造成了一个缺点,就是接收者必须轮询消息队列,才能收到最近的消息。

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

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

相关

  • 世界能源消耗量世界能源消耗量是指所有人类文明所使用的能量总和。它通常以年度测定,并会计算人类文明所使用的所有能量来源,是审视可持续发展的重要数据,对人类的社会、经济、政治领域有很深
  • 埃万杰利斯塔·托里切利埃万杰利斯塔·托里切利(意大利语:Evangelista Torricelli,又译托里拆利,1608年10月15日-1647年10月25日),意大利物理学兼数学家,以发明气压计而闻名。气压单位托(torr)以他的名字命名
  • 狄里布凡特里布万·比尔·比克拉姆·沙阿·德瓦(1906年6月30日-1955年3月13日),也译作特里布文,是尼泊尔沙阿王朝的第9任国王(在位期间:1911年–1950年与1951年1月7日-1955年3月13日),生于尼
  • 地散磷地散磷(英语:Bensulide)是一种有机磷乙酰胆碱酯酶抑制剂(英语:acetylcholinesterase inhibitor),常用作除草剂和杀虫剂。它作用于植物的根部的分生组织,通过与乙酰辅酶结合来抑制细
  • 汉中话汉中话,即通行于今陕西省汉中市境内的大部分地区的汉中方言。在汉语方言研究上,一般认为归属于西南官话中的成渝片(2010版称为川黔片),亦有个别分支属中原官话关中片。汉中地处陕
  • 东北石油大学中国黑龙江东北石油大学原名东北石油学院、大庆石油学院,是伴随大庆油田发展起来的一所全国重点高等院校,是大庆石油会战的重要成果之一,学校以工学为主,拥有理、工、文、工、经
  • 詹姆斯·加菲尔德詹姆斯·艾布拉姆·加菲尔德(英语:James Abram Garfield,1831年11月19日-1881年9月19日),美国政治家,第20任美国总统,共和党人。加菲尔德曾九任众议院议员(1863年-1880年),其后当上参议
  • 春闺风月《春闺风月》是一部1937年的神经喜剧电影,艾琳·邓恩、加利·格兰特主演。导演李欧·麦卡瑞凭该片获奥斯卡最佳导演奖。Jerry Warriner(格兰特)一次旅行回来发现其妻Lucy(邓恩)不
  • 载茯四等侍卫(道光八年~二十二年) 二等侍卫(道光二十二年~?年) 镶白旗总族长(咸丰四年~?年) 正蓝旗总族长(咸丰十一年~?年)奉恩辅国公载茯(1809年11月1日-1862年10月30日),奉恩辅国公奕礼第一子,母妻
  • 第25届日本电影学院奖第25回日本电影学院奖于2002年3月8日公布并举行颁奖仪式。