消息队列

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

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

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

相关

  • 以巴冲突进行中持续中的冲突以色列-巴勒斯坦冲突是持续中的冲突,为阿以冲突及中东战争的一部分。巴以冲突不能够简单地概括为所有以色列犹太人与所有巴勒斯坦阿拉伯人之间的双边冲突
  • 高山高山,可以指:地名:人名:其他:
  • 八瑶湾事件八瑶湾事件,或称八瑶湾琉球人事件、琉球漂民事件、宫古岛民台湾遇害等,发生于公元1871年,是琉球国第二尚氏王朝末期,从宫古岛到首里上缴年贡的船队于归途时,在台湾东南部高士佛社
  • 默塞德默塞德(英语:Merced)是一个位于美国加利福尼亚州中部圣华金谷地区 (San Joaquin Valley) 的城市,也是同名县份默塞德县 (Merced County) 的县府。根据2000年人口普查,共有人口7万
  • 板足鲎目板足鲎目(学名:Eurypterida)又名广翅鲎目、广翼目,通称板足鲎、广翅鲎、海蝎,是一类已灭绝的节肢动物,大约有300种已知的板足鲎。诞生于奥陶纪,距今约4亿6700万年前,繁盛于志留纪,灭
  • 劳施山坐标:47°44′N 12°41′E / 47.733°N 12.683°E / 47.733; 12.683劳施山(德语:Rauschberg),是德国的山峰,位于该国南部,由巴伐利亚负责管辖,属于基姆高山脉的一部分,该山峰海拔高度
  • 折原一折原一(1951年11月16日-),是一名日本著名推理小说作家,埼玉县久喜市出生,毕业于早稻田大学文学部,现为日本推理作家协会一员,享有“叙述性诡计之王”的美誉。他的作品能吸引读者一气
  • 艾米·比奇艾米·玛西·切妮·比奇(英语:Amy Marcy Cheney Beach,1867年9月5日-1944年12月27日),常被称为“比奇夫人”,美国作曲家,钢琴家。比奇夫人出生于新罕布什尔州乡下的一个富裕家庭。她
  • 海伦·谢尔夫贝克海伦·谢尔夫贝克(瑞典语:Helene Schjerfbeck,国际音标发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unico
  • 交割交割,指期货到期后(或是证券成交后),买卖双方依约相互交付货物(凭证)及货款。至此,方完成所有交易行为。交割分为“现货交割”与“现金交割”。