消息队列

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

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

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

相关

  • 黑山县黑山县是中国辽宁省锦州市下辖的一个县。位于辽宁省西部。明代名为镇远堡,清初又叫小河山,小黑山。县城东北隅有小黑山,古上帝庙建于其颠。该山虽不甚高,但登临其上,远望群山,近瞻
  • 大地测量学大地测量学是在一定的时间与空间参考系中,测量和描绘地球形状及其重力场并监测其变化,为人类活动提供地球空间信息的一门学科,属于地球科学的一个分支,也是一切测绘科学技术的基
  • 临床诊疗指南医学指南(medical guidelines)也称为临床指南(clinical guideline)或是临床实践指南 (clinical practice guideline) ,是目的在提供医疗决策及准则指南的文件,会针对医疗保健特定领
  • 母乳母乳,又称人乳、人奶,为产后妇女乳房产生的乳水,用于哺育婴儿,世界卫生组织亦推荐用母乳哺育六个月以下的婴儿,乳汁内含有碳水化合物、蛋白质、脂肪、维生素、矿物质、脂肪酸和牛
  • 斯卡拉大剧院斯卡拉大剧院(一译史卡拉歌剧院,意大利文名为 Teatro alla Scala 或 La Scala)位于意大利米兰,是世界最著名的歌剧院之一。大剧院于1778年8月3日正式启用,当时名为Nuovo Regio Du
  • 文观部式文化观光部2000年式,亦称国语罗马字表记法(朝鲜语:국어의 로마자 표기법/國語의 로마字表記法 Gug-eoui lomaja pygogibeob)为现在韩国所使用的韩国语(谚文)拉丁文字转写规则。200
  • 金弘道金弘道(韩语:김홍도;1745年-1806年前?),字士能(韩语:사능),号檀园(韩语:단원)、丹邱(韩语:단구)、西湖(韩语:서호)、高眠居士(韩语:고면거사)、醉画士(韩语:취화사)、辄醉翁(韩语:첩취옹),本贯金海金氏,朝鲜
  • (Z)-二苯基乙烯()-1,2-Diphenylethene(Z)-二苯基乙烯是芳基乙烯的一种,这种烃类由顺式的乙烯连接苯基基团所组成。与(E)-二苯基乙烯互为顺反异构体。
  • 亨利·雷伯恩亨利·雷伯恩爵士 FRSE RA (Sir Henry Raeburn /ˈreɪbərn/;1756年3月4日-1823年7月8日)是一名苏格兰肖像画画家,是乔治四世的御用画家。他出生于苏格兰爱丁堡斯托克布里奇(Stoc
  • 禁歌禁歌,又称音乐审查。这种审查可能源于各种各样的动机,包括道德、政治、军事或宗教的理由。常见手段为禁止媒体播出,与销毁出版品。 台湾白色恐怖时期,有许多名曲被列为禁歌。