什么是消息队列?消息队列能干什么?消息队列在什么场景下使用?

消息队列
什么是消息队列?
消息队列容许应用程序经过相互发送消息进行通讯。当目标程序繁忙或未链接时,消息队列提供临时消息存储。
程序源于生活,现实举例:
人们在食堂排队等待轮到本身买饭,这个排队的长度就是消息队列提供临时消息存储.
详解:
队列是等待处理的一系列事物,从行的开头开始,而后按顺序,顺序处理。消息队列是应用程序之间发送的消息队列。它包括等待处理的一系列工做对象。
消息是在发送器和接收器应用程序之间传输的数据;它本质上是一个字节数组,顶部有一些标题。消息的示例能够是告知一个系统开始处理任务的内容,它能够包含关于完成任务的信息,或者仅仅是纯消息。
消息队列的基本架构很简单;有一些名为Producers的客户端应用程序,它们建立消息并将消息传递到消息队列。另外一个名为使用者的应用程序链接到队列并获取要处理的消息。放置在队列上的消息将被存储,直到使用者检索它们。
消息队列提供异步通讯协议,该协议是将消息放入消息队列的系统,不须要对继续处理当即做出响应。电子邮件多是异步通讯的最佳例子。当电子邮件被发送时,发件人继续处理其余事情,而不须要接收者当即做出反应。这种处理消息的方式使生产者与使用者脱钩,这样它们就不须要同时与消息队列交互。
去耦和可扩展性:
解耦描述了一个系统的一个部分在多大程度上依赖于系统的另外一个部分。解耦是将函数分离的过程,使它们更加自成体系.当两个或多个系统可以在不链接的状况下进行通讯时,就能够实现解耦系统。这些系统能够保持彻底自主,不了解其余功能。解耦一般是一个结构良好的计算机系统的标志,由于它更易于维护,若是解耦系统中的一个进程不能处理队列中的消息,则其余消息仍然能够添加到队列中,并在系统恢复后进行处理。您还可使用消息队列来延迟处理--例如,生产者将消息发送到队列。在指定的时间,使用者启动并处理队列中的消息。一个排队的消息能够被存储和转发,而且消息能够被从新传递,直到它被处理.不是构建一个大的应用程序,而是有利的是,将应用程序的不一样部分解耦,并使用消息队列异步地在它们之间进行通讯。这容许应用程序的不一样部分独立地发展,以不一样的语言编写,和/或由分离的开发团队维护。消息队列将使应用程序中的进程彼此独立和独立。第一个进程将永远不须要调用另外一个进程,将通知发布到另外一个进程,或遵循其余进程的进程流程。它能够将消息放入队列中,而后继续处理。其余进程也能够独立地处理它们的工做,当它们可以处理它们时,能够从队列中获取消息。这种处理消息的方式建立了一个易于维护和扩展的系统。
消息队列在什么场景下使用?-一个简单的用例:
假设您拥有每秒接收许多请求的Web服务,其中不可能丢失任何请求,而且全部请求都须要由具备高吞吐量的函数来处理。换句话说,web服务老是必须是高度可用的,而且准备接收新的请求而不是被先前接收的请求的处理锁定。
在这种状况下,在Web服务和处理服务之间放置一个队列是理想的。Web服务能够将“开始处理”消息放在队列上,而另外一个进程能够按顺序接收和处理消息。这两个进程彼此解耦,不须要等待。若是您在短期内收到了大量请求,那么处理系统将可以处理全部这些请求。即便请求数量增长,队列也将与请求保持一致.而后想象一下,业务和工做量都在增长,系统须要扩大规模。所须要作的就是增长更多的消费者,以便更快地处理队列。web

相关文章
相关标签/搜索