receive_logs_topic-async.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. $config = require __DIR__ . '/../config.php';
  15. $log = require __DIR__ . '/../log.php';
  16. $consumer = new class ($config, $log) extends AbstractConsumer {
  17. protected bool $async = true;
  18. protected string $exchange = 'topic_logs';
  19. protected string $exchangeType = 'topic';
  20. protected string $queue = 'topic_logs_queue';
  21. protected array $routingKeys = [
  22. '#',
  23. 'kern.*',
  24. '*.critical',
  25. 'kern.*" "*.critical',
  26. ];
  27. protected array $consume = [
  28. 'noAck' => true,
  29. 'noLocal' => true,
  30. ];
  31. public function consume(Message $message, Channel $channel, AbstractClient $client)
  32. {
  33. echo " [x] Received ", $message->content, "\n";
  34. }
  35. };
  36. $worker->onWorkerStart = [$consumer, 'onWorkerStart'];
  37. Worker::runAll();