消息队列

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

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

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

相关

  • 健康城市健康城市在1981年开始由世界卫生组织开始推动,由世界卫生组织所显示的资料指出,超过百万人口的城市有112个,最迟至2025年,全世界逾60%人口会居住在城市中。 工业化社会所带来的
  • 三叉神经痛三叉神经痛(Trigeminal neuralgia,TN,或TGN)是一个严重的神经性慢性疼痛症,主要影响三叉神经(也称为第五对脑神经:由三个分支的神经将面部感觉传导到大脑,并且从大脑控制面部运动的
  • 血管学血管学 (从希腊 ἀγγεῖον, angeīon, "血管"; 与-λογία, -logia) 是一门专门研究循环系统、淋巴系统相关疾病的科学,例如:动脉, 静脉与淋巴管的问题与疾病,在英国,比
  • 资金资金,俗称头寸,是指可供使用运用的金钱,常用于公司或组织上,资金的充裕与否,常是一个企业经营成功的关键之一,尤以新成立的公司为然,除了公司拥有者于公司成立初期所交予的金钱之外
  • 日本运载火箭发射列表以下列表记录了日本国现代航天事业的各次运载火箭的发射情况。发射任务的最终目标高度凡高于地球海平面100千米的卡门线均被收录,未收录探空火箭的亚轨道任务。 (UTC+9)11时58
  • 石墙树石墙树,又称古墙树或石涧榕,是指从石墙缝中长出来的树木。早期的石墙由于石块之间有缝,因此榕树等生命力顽强的种子就会从石缝中长出苗来。这些树苗虽然长在路旁的石墙上,但由于
  • 海里格·冯·科赫尼尔斯·法比安·海里格·冯·科赫(瑞典语:Niels Fabian Helge von Koch,1870年1月25日-1924年3月11日)是一位瑞典数学家。著名的科赫雪花,最早被描述出来的分形曲线之一,就是以他
  • 彼得·比尔·波特彼得·比尔·波特(英语:Peter Buell Porter,1773年8月14日-1844年3月20日),美国政治家,美国民主-共和党成员,曾任美国众议员(1809年-1813年、1815年-1816年)和美国战争部长(1828年-1829
  • 低温物理学报《低温物理学报》,可以指:
  • C4苯C4苯是一类含有1个苯环和其余4个碳原子的有机化合物。C4苯存在于石油中。汽油中含有约5~8%的C4苯。1,2,3,4-四甲苯1,3,4,5-四甲苯1,2,4,5-四甲苯1,2-二乙苯1,3-二乙苯1,4-二