1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| <?php require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel();
$exchange = 'direct_exchange'; $channel->exchange_declare($exchange, 'direct', false, false, false);
list($queue_name, ,) = $channel->queue_declare("", false, false, true, false);
$severities = array_slice($argv, 1); if(empty($severities )) { file_put_contents('php://s tderr', "Usage: $argv[0] [info] [warning] [error]\n"); exit(1); }
foreach($severities as $severity) {
$channel->queue_bind($queue_name, $exchange, $severity); echo $queue_name, ' 绑定 routingKey:', $severity, "\n"; }
echo ' [*] Waiting for logs. To exit press CTRL+C', "\n";
$callback = function($msg){ echo ' [x] ',$msg->delivery_info['routing_key'], ':', $msg->body, "\n"; };
$channel->basic_consume($queue_name, '', false, true, false, false, $callback);
while(count($channel->callbacks)) { $channel->wait(); }
$channel->close(); $connection->close();
|