当前位置:首页 > Web开发 > 正文

RabbitMQ中文文档PHP版本(六)

2024-03-31 Web开发

2019年12月10日10:05:54

原文:https://www.rabbitmq.com/tutorials/tutorial-six-php.html

长途过程挪用(RPC) (使用php-amqplib

先决条件

本教程假定RabbitMQ 在标准端口(5672)的本田主机安置并运行如果您使用其他主机,端口或根据,则连接设置需要进行调解。

在哪里获得辅佐

如果您在阅读本教程时遇到困难,可以 通过邮件列表联系。

第二篇教程中,我们学习了如何使用事情行列队伍在多个事情人员之间分配耗时的任务。

但是,如果我们需要在长途计算机上运行成果并期待功效怎么办?好吧,那是一个差此外故事。这种模式凡是称为“ 长途过程挪用”或“ RPC”

在本教程中,我们将使用RabbitMQ构建RPC系统:客户端和可伸缩RPC处事器。由于我们没有值得分配的耗时任务,因此我们将创建一个虚拟RPC处事,该处事返回斐波那契数。

客户端界面

为了说明如何使用RPC处事,我们将创建一个简单的客户端类。它将果然一个名为call的要领,该要领 发送RPC请求并梗阻,直到收到答案为止:

$fibonacci_rpc = new FibonacciRpcClient(); $response = $fibonacci_rpc->call(30); echo ‘ [.] Got ‘, $response, "\n";

有关RPC的说明

尽管RPC是计算中非常遍及的模式,但它经常受到攻讦。当措施员不知道函数挪用是本地的还是迟缓的RPC时,就会呈现问题。这样的混乱会导致系统幻化莫测,并给调试增加了不须要的庞大性。滥用RPC可能会导致无法维护的意大利面条代码,而不是简化软件。

服膺这一点,请考虑以下建议:

确保明显的是哪个函数挪用是本地的,哪个是长途的。

记录您的系统。明确组件之间的依赖关系。

措置惩罚惩罚错误案例。RPC处事器永劫间封锁后,客户端应如何反响?

如有疑问,请制止使用RPC。如果可以的话,应该使用异步管道-取代类似RPC的梗阻,将功效异步推送到下一个计算阶段。

回调行列队伍

凡是,通过RabbitMQ进行RPC很容易。客户端发送请求动静,处事器发送响应动静。为了接收响应,我们需要发送带有请求的“回调”行列队伍地点。我们可以使用默认行列队伍。让我们测验考试一下:

list($queue_name, ,) = $channel->queue_declare("", false, false, true, false); $msg = new AMQPMessage( $payload, array(‘reply_to‘ => $queue_name) ); $channel->basic_publish($msg, ‘‘, ‘rpc_queue‘); # ... then code to read a response message from the callback_queue ...

邮件属性

AMQP 0-9-1协议预界说了动静附带的14个属性集。除以部属性外,大大都属性很少使用:

delivery_mode:将动静符号为长期动静(值为2)或瞬态动静(1)。您可能还记得第二个教程中的此属性

content_type:用于描述编码的mime类型。例如,对付经常使用的JSON编码,将此属性设置为application / json是一个好习惯

reply_to:凡是用于定名回调行列队伍。

related_id:用于将RPC响应与请求相关联。

关联ID

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32109.html