RabbitMQ 从入门到放弃系列笔记(八):远程调用(RPC)

在云计算环境中,很多时候需要用它其他机器的计算资源,把一部分计算任务分配到其他节点来完成。RabbitMQ 如何使用 RPC 呢?下面将会通过其它节点完成斐波纳契示例。 流程图  当客户端启动时,它创建了匿名的 callback queue 客户端发起 RPC 请求时将同时设置两个 properties:reply_to 设置为 callback queue;correlation_i…

RabbitMQ 从入门到放弃系列笔记(七):通过主题进行消息分发

Topic Exchange 对于 Message 的 routing_key 字符串格式是有限制的:以点号”.”分割的字符表,如php.laravel,并且长度不能超过 255 个字节。 对于 routing_key 而言,有两个特殊字符: *:代表任意单词 #:代表0个或多个单词  Topic Exchange 与其他 Exchange 的转化: routi…

RabbitMQ 从入门到放弃系列笔记(六):消息路由

如果我们只想让 error 级别的 log 保存到磁盘,该怎么做? emit_logs_direct.php <?php /** * 发送消息 */ $exchangeName = ‘direct_logs’; $level = empty($argv[1]) ? ‘info’ : $argv[1]; // 错误级别:info、warn、error $message = empty…

RabbitMQ 从入门到放弃系列笔记(五):消息订阅(Publish/Subscribe)

之前都是将消息发送到同一个 Consumer,而现在我们需将其发送到多个 Consumer。 我们将创建一个日志系统,它包含两个部分:第一个部分负责发出log(Producer),第二个部分负责接收并打印(Consumer)。我们将构建两个 Consumer,第一个将 log 写到物理磁盘上;第二个将 log 输出到屏幕。 “Fanout” not telling…

RabbitMQ 从入门到放弃系列笔记(四):消息分发机制

对于计算密集型任务,需要将其分发给多个消费者进行处理。 准备工作 我们对前面测试的代码稍作改造: task.php <?php /** * 分发任务 */ $exchangeName = ‘task’; $queueName = ‘worker’; $routeKey = ‘worker’; $message = empty($argv[1]) ? ‘Hello World!’ :…

RabbitMQ 从入门到放弃系列笔记(三):PHP 中实现消息发送和接收

send.php <?php /** * 发送消息 */ $exchangeName = ‘demo’; $routeKey = ‘hello’; $message = ‘Hello World!’; // 建立TCP连接 $connection = new AMQPConnection([ ‘host’ => ‘localhost’, ‘port’ => ‘5672’…

RabbitMQ 从入门到放弃系列笔记(一):核心概念及术语

声明:本系列为学习笔记,所以比较精简,有问题欢迎讨论。 1、AMQP:Advanced Message Queuing Protocol,是一个提供统一消息服务的应用层标准协议。 2、IPC(单一系统进程间通信) -> socket(不同机器间进程通信) -> AMQP(解决大型系统模块与组件间通信) 3、RabbitMQ 基于 Erlang 开发,是 AMQP 的一个开源实…