Muszę utworzyć prostego menedżera kolejek, aby przekazać numer od nadawcy do konsumenta. Poradnik Hello World dostarczony przez RabbitMQ obejmuje prawie 70% tego.PHP RabbitMQ setTimeout lub inna opcja, aby przestać czekać na kolejkę
Ale muszę zmienić kolejkę, aby nie zawsze czekać na wiadomości przychodzące. Lub przestań czekać po określonej ilości wiadomości. Czytałem i wypróbowałem kilka rozwiązań z innych postów, ale to nie działa.
rabbitmq AMQP::consume() - metoda niezdefiniowana. istnieje inna metoda, wait_frame, ale jest chroniona.
i inny post jest w python, którego nie rozumiem.
<?php
require_once __DIR__ . '/vendor/autoload.php';
require 'config.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
function recieveQueue($queueName){
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
// try{
// $connection->wait_frame(10);
// }catch(AMQPConnectionException $e){
// echo "asdasd";
// }
$channel = $connection->channel();
$channel->queue_declare($queueName, false, false, false, false);
echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";
$callback = function($msg) {
echo " [x] Received ", $msg->body, "\n";
};
// $tag = uniqid() . microtime(true);
// $queue->consume($callback, $flags, $tag);
$channel->basic_consume($queueName, '', false, true, false, false, $callback);
// $channel->cancel($tag);
while(count($channel->callbacks)) {
$channel->wait();
}
echo "\nfinish";
}
recieveQueue('vtiger');
?>
co oznacza 'null' i 'false' oznacza? i czy mogę się dowiedzieć, czy istnieje sposób, aby przestać czekać po otrzymaniu sygnału "stop" od producenta? – jedi
'public function wait ($ allowed_methods = null, $ non_blocking = false, $ timeout = 0)' – mnv
Działa to tylko w przypadku korzystania ze skarpet –