工作队列(又称:任务队列——Task Queues)是为了避免等待一些占用大量资源、时间的操作。当我们把任务(Task)当作消息发送到队列中,一个运行在后台的工作者(worker)进程就会取出任务然后处理。当你运行多个工作者(workers),任务就会在它们之间共享。

这个概念在网络应用中是非常有用的,它可以在短暂的HTTP请求中处理一些复杂的任务。

一、准备

  1、使用 sleep()函数来模拟复杂任务情况。我们在字符串中加上点号(.)来表示任务的复杂程度,一个点(.)将会耗时1秒钟。比 如”Hello…”就会耗时3秒钟

  2、生成者

  

<?php

/**
 * PHP amqp(RabbitMQ) Demo-2
 */

$exchangeName = 'demo';
$queueName = 'task_queue';
$routeKey = 'task_queue';
$message = empty($argv[1]) ? 'Hello World!' : ' '.$argv[1];

$connection = new AMQPConnection(array('host' => '127.0.0.1', 'port' => '5672', 'vhost' => '/', 'login' => 'guest', 'password' => 'guest'));
$connection->connect() or die("Cannot connect to the broker!\n");

$channel = new AMQPChannel($connection);

$exchange = new AMQPExchange($channel);
$exchange->setName($exchangeName);

$queue = new AMQPQueue($channel);
$queue->setName($queueName);
$queue->setFlags(AMQP_DURABLE);//声明为持久化
$queue->declareQueue();

$exchange->publish($message, $routeKey);
var_dump("[x] Sent $message");

$connection->disconnect();
View Code

相关文章:

  • 2021-08-26
  • 2021-08-16
  • 2021-09-02
  • 2022-12-23
  • 2021-08-08
  • 2022-12-23
  • 2021-06-17
  • 2021-10-02
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-02
  • 2021-12-22
  • 2021-10-02
  • 2022-01-20
  • 2022-12-23
相关资源
相似解决方案