多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 5.2 消息队列 ## 5.2 消息队列 消息队列(Message queue)是一种*进程间通信(Inter-process communication,IPC)*机制。一个简单的消息队列的例子是:一个进程往队列里投递消息,另一个进程从队列里取出消息并执行相应的操作。 消息队列可以使Web网站在后台异步完成一些比较花时间的任务——Web服务器处理一个HTTP请求的时间是有限制的,一般在几十秒内没有回应就会被客户端当作超时错误。所以如果一个HTTP请求会触发一个长时间运行的任务,可以把它投递到消息队列,由后台的另一个进程来执行,处理HTTP请求的进程不必等待任务结束就可以立即返回应答(如果客户端需要知道任务的结果,可以稍后再查询)。 我们可以自己实现一个简单的消息队列,如前面[Cron](../web_site/cron.md)提到的,用Cron加上数据库就可以做到;也可以采用专门的消息队列服务器(软件),如[RabbitMQ](https://www.rabbitmq.com/)等。 需要说明的是,RabbitMQ等一些队列服务器采用了**AMQP**,即**高级消息队列协议(Advanced Message Queuing Protocol)**;对用户来说,这意味着可以使用相同的客户端与不同的队列服务器对话,只要它们都使用AMQP。有关AMQP以及更多支持此协议的队列服务器,请参考:[https://en.wikipedia.org/wiki/Advanced\_Message\_Queuing\_Protocol](https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol)