当前位置:首页 > 搭建教程 > 正文内容

即时通讯开发之消息队列Message queue如何保证消息不丢?

im源码1年前 (2024-01-09)搭建教程464

时通讯消息简介



"消息"是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。


消息被发送到队列中。"消息队列"是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。


折叠处理技术

"消息队列"是 Microsoft 的消息处理技术,它在任何安装 Microsoft Windows 的计算机组合中,为任何应用程序提供消息处理和消息队列功能,无论这些计算机是否在同一个网络上或者是否同时联机。


"消息队列网络"是能够相互间来回发送消息的任何一组计算机。网络中的不同计算机在确保消息顺利处理的过程中扮演不同的角色。它们中有些提供路由信息以确定如何发送消息,有些保存整个网络的重要信息,而有些只是发送和接收消息。


"消息队列"安装期间,管理员确定哪些服务器可以互相通信,并设置特定服务器的特殊角色。构成此"消息队列"网络的计算机称为"站点",它们之间通过"站点链接"相互连接。每个站点链接都有一个关联的"开销",它由管理员确定,指示了经过此站点链接传递消息的频率。


折叠进程通信

消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进程持续的概念(process-persistent);管道及有名管道则是典型的随进程持续IPC,并且,只能传送无格式的字节流无疑会给应用程序开发带来不便,另外,它的缓冲区大小也受到限制。


消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息。消息队列是随内核持续的。


目前主要有两种类型的消息队列:POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用。考虑到程序的可移植性,新开发的应用程序应尽量使用POSIX消息队列。


系统V消息队列是随内核持续的,只有在内核重起或者显示删除一个消息队列时,该消息队列才会真正被删除。因此系统中记录消息队列的数据结构(struct ipc_ids msg_ids)位于内核中,系统中的所有消息队列都可以在结构msg_ids中找到访问入口。 消息队列就是一个消息的链表。每个消息队列都有一个队列头,用结构struct msg_queue来描述。队列头中包含了该消息队列的大量信息,包括消息队列键值、用户ID、组ID、消息队列中消息数目等等,甚至记录了最近对消息队列读写进程的ID。读者可以访问这些信息,也可以设置其中的某些信息。


扫描二维码推送至手机访问。

版权声明:本文由创想互联IM聊天系统发布,如需转载请注明出处。

本文链接:https://im.fofo.club/blog/post/44.html

分享给朋友:

“即时通讯开发之消息队列Message queue如何保证消息不丢?” 的相关文章

xmpp即时通讯开源框架-基于xmpp协议的即时通讯工具有哪些

xmpp即时通讯开源框架-基于xmpp协议的即时通讯工具有哪些

即时通讯(IM), 目前,IM有四个主要协议: 即时通讯和空间协议), 空间和即时信息协议(PRIM)、用于即时消息和空间平衡扩展的过程协议SIP(SIMPLE)和XMPP。 PRIM类似于XMPP、SIMPLE,但不再使用。 Android如何实现即时通讯xmpp? 演示。 你...

php即时通讯解决方案-请问PHP能否实现即时通讯?

php即时通讯解决方案-请问PHP能否实现即时通讯?

最简单的说,它可以定期刷新,比如10秒的间隔。新数据,反馈到前台,没有新数据等待下次刷新。 但实际上在应用中需要考虑消息的及时性、服务器压力等。php即时通讯。 可以用comet来设计 节点。js、socketphp即时通讯系统。 总之,当你真的想为自己的项目开发im系统时,这是一个大项目 如何开发...

即时通讯App开发:从0到1的全过程

即时通讯App开发:从0到1的全过程

在数字化时代,即时通讯已经成为人们生活中不可或缺的一部分。如果你想进入这个领域并开发属于自己的即时通讯应用程序,本文将为你提供从0到1的全过程指南。1. 设想和市场研究在着手开发之前,你需要明确你的应用程序的核心特点和目标用户群体。通过详尽的市场研究,你可以了解竞争对手的产品,并找出差距和机会。2....

怎么开发一个即时通讯的app?

怎么开发一个即时通讯的app?

开发即时通讯app流程从app开发前,中,后期详细给您讲解下:  一、App开发前期  1、明确app开发需求在明确需要开发一个app前,首先要问自己,为什么要做一个app,手机app需要什么系统版本,app是给谁使用的,面向的用户是哪些群体等。要对开发app行业进行了解,分析app开发的可行性。 ...

如何信息共享的即时通讯系统及方法理论?

如何信息共享的即时通讯系统及方法理论?

1、 一种实现用户信息共享的即时通讯系统, 包括多个客户端及至少一个通讯服务器, 所 述多个客户端连接所述通讯服务器, 其特征在于, 所述实现用户信息共享的即时通讯系统还 包括:至少一个全局服务器; 控制服务器; 以及查询服务器, 所述多个客户端通过所述通讯服务器分别与所述查询服务器及所述全局服 务...

社交即时通讯软件app如何开发

社交即时通讯软件app如何开发

社交伴随人的 一生,如果没有社交,不跟别人接触往来,我们的身心健康会受到极大的影响。社交的方式随着互联网的发展也发生了极大的改变,过去的社交集中在现实生活中,人们需要一起面对面交谈交往。现在的社交除了现实生活,还可以通过移动互联网来解决。尤其是移动端和智能手机的普及给我们的生活带来了翻天覆地的变化,...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。