worker-async.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. use Bunny\Channel;
  3. use Bunny\Message;
  4. use Bunny\AbstractClient;
  5. use Workerman\Worker;
  6. use Roiwk\Rabbitmq\Producer;
  7. use Roiwk\Rabbitmq\AbstractConsumer;
  8. if (file_exists(__DIR__ . '/../../../../../vendor/autoload.php')) {
  9. require __DIR__ . '/../../../../../vendor/autoload.php';
  10. } else {
  11. require __DIR__ . '/../../vendor/autoload.php';
  12. }
  13. $worker = new Worker();
  14. $worker = new Worker();
  15. $config = require __DIR__ . '/../config.php';
  16. $log = require __DIR__ . '/../log.php';
  17. $consumer = new class ($config, $log) extends AbstractConsumer {
  18. protected bool $async = true;
  19. protected string $queue = 'task_queue';
  20. protected array $qos = [
  21. 'prefetch_size' => 0,
  22. 'prefetch_count' => 1,
  23. ];
  24. public function consume(Message $message, Channel $channel, AbstractClient $client)
  25. {
  26. echo " [x] Received ", $message->content, "\n";
  27. sleep(substr_count($message->content, '.'));
  28. echo " [x] Done", $message->content, "\n";
  29. $channel->ack($message);
  30. }
  31. };
  32. $worker->onWorkerStart = [$consumer, 'onWorkerStart'];
  33. Worker::runAll();