消息队列

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

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

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

相关

  • 苯甲腈苯甲腈是具有分子式C6H5CN的芳香化合物,简写为PhCN。苯甲腈是一种无色,有甜杏仁味的液体。它可以通过苯甲酰胺脱水或者通过氰化钠和溴苯反应制备。苯甲腈是一种有用的溶剂,可以
  • 纳粹纳粹主义(“纳粹”音译自 Nazi,本身是缩写,来自德语的“国家民族社会主义”:Nationalsozialismus),指1933年至1945年间统治德国的独裁政治,即“德意志第三帝国”。“纳粹”这个词在
  • 谢家荣谢家荣(1898年9月7日-1966年8月13日),字季骅,江苏省上海县人(今上海市)。地质矿床学家、地质教育家。九三学社会员,中央研究院第一批院士,中国科学院第一批学部委员。1957年被划为右
  • 莅临指导莅临指导(朝鲜语:현지지도/現地指導),是指北朝鲜一种经济建设和政治宣传模式,金日成和金正日亲自到集体农庄和工厂现场视察和提供意见。这些指导比较接近政治宣传,表示金氏父子有解
  • 巴黎春天巴黎春天(Printemps),或译春天百货,是一间法国的连锁百货公司。海外发展的状况并不十分顺利,该连锁集团目前主要的获利还是以法国境内为主。 春天百货最早是由朱尔·贾娄索于1865
  • 国家级畜禽遗传资源保护区中国的国家级畜禽遗传资源保护区,是指国家为保护特定畜禽遗传资源即畜禽及其卵子(蛋)、胚胎、精液、基因物质等遗传材料,在其原产地中心产区划定的特定区域,由农业部根据全国畜禽
  • 阿尼法阿曼阿尼法阿曼(马来语:Anifah bin Haji Aman;1953年11月16日-),现任马来西亚沙巴州金马利国会议员,同时为前马来西亚外交部长。曾是国阵巫统党员,2018年9月19日宣布退党,成为独立议员。
  • 小仓诚司小仓 诚司(日语:小倉 誠司、1984年2月27日-)是日本的音乐家。兵库县西胁市出身。现在是flumpool的鼓手、队长。
  • 萨博96萨博96是瑞典萨博汽车于1960年至1980年一月生产的车款。Saab 96源自于Saab 92的底盘,改进并且现代化,为公司开拓新的产品线。这是一款让Saab这个品牌扬名国际的车款,而且也是第
  • 五四路街道五四路街道,是中华人民共和国河北省保定市莲池区下辖的一个乡镇级行政单位。五四路街道下辖以下地区:王庄路社区、天马社区、西苑北社区、西苑南社区、迎宾社区、东星社区、兰