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
| <?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel();
$exchange = 'topic_exchange'; $channel->exchange_declare($exchange, 'topic', false, false, false);
list($queue_name, ,) = $channel->queue_declare("", false, false, true, false);
$binding_keys = array_slice($argv, 1); if( empty($binding_keys )) { file_put_contents('php://stderr', "Usage: $argv[0] [binding_key]\n"); exit(1); }
foreach($binding_keys as $binding_key) { $channel->queue_bind($queue_name, $exchange, $binding_key); }
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();
|