RPC(Remote Procedure Call Protocol)远程过程调用协议,简称远程调用。但如果仅仅从这一层意义上来说,RabbitMQ的PRC没有实际的意义,因为远程调用接口服务,我们通过curl会更简单易用一些,而且PHP本身也有RPC调用的相关方法。但我要说的是,RabbitMQ的RPC主要用于消息消费后的回复。在这一点RabbitMQ就显得有意义了。因为我们有的时候,发送消息后,需要知道消费的情况,根据消费的情况做后续的逻辑。
在开始介绍之前,我们先了解下RabbitMQ消息的属性,以下是我从$envelope打印出来的信息。
[body:AMQPEnvelope:private] => [register]Message[warning] #消息内容 [delivery_tag:AMQPEnvelope:private] => 1 #在消费确认中会有使用到。 [is_redelivery:AMQPEnvelope:private] => [exchange_name:AMQPEnvelope:private] => exchange.all.logs #exchange的名称 [routing_key:AMQPEnvelope:private] => register.warning #routeKey [content_type:AMQPEnvelope:private] => application/json #消息的类型,我们一般设置为application/json [content_encoding:AMQPEnvelope:private] => #消息编码 [headers:AMQPEnvelope:private] => array() [delivery_mode:AMQPEnvelope:private] => 1 #设置为2表示持久化,1为临时的 [priority:AMQPEnvelope:private] => 0 [correlation_id:AMQPEnvelope:private] => #用来关联RPC的请求与响应.本文将使用到 [reply_to:AMQPEnvelope:private] => #常用作回调队列名,本文将使用到。 [expiration:AMQPEnvelope:private] => [message_id:AMQPEnvelope:private] => #用来存放消息的id [timestamp:AMQPEnvelope:private] => 0 #发来存放发送消息的时间。 [type:AMQPEnvelope:private] => [user_id:AMQPEnvelope:private] => [app_id:AMQPEnvelope:private] =>
相关阅读:
Pingback引用通告: PHP中的AMQP类 | 精彩每一天