Ich versuche, php-amqplib zum Senden und Empfangen von Nachrichten zu verwenden. Es funktioniert Senden/Empfangen am Terminal. Aber wenn Webbrowser gehen, nicht aus der Warteschlange empfangen kann, wartet er kontinuierlich auf eine Nachricht. Früher habe ich unten Code für receive.phpWie man php-amqplib rabbitMQ im Webbrowser verwendet
require_once(__DIR__ . '/lib/php-amqplib/amqp.inc');
include_once(__DIR__ . '/config/config.php');
$connection = new AMQPConnection(HOST, PORT, USER, PASS, VHOST);
$channel = $connection->channel();
$channel->queue_declare('test22');
$callback = function($msg){
echo $msg->body;
};
$channel->basic_consume('test22', 'consumer_tag', false, true, false, false, $callback);
while(count($channel->callbacks)) {
$channel->wait();
}
$channel->close();
$connection->close();
Es wird erste Nachricht aus der Warteschlange, wenn ich unten statt Callback-Funktion verwenden, aber nicht verbrauchen aus der Warteschlange
$abc=$channel->basic_get("test22", false, 2);
if(!empty($abc))
{
print_r($abc->body);
}
Es bedeutet, Nachrichten in der Warteschlange zur Verfügung stehen ' test22 '. geben Sie mir einen Hinweis.
Welche Version der Bibliothek verwenden Sie? Diese Datei 'amqp.inc' wird in modernen Versionen der Bibliothek nicht mehr verwendet. Ich schlage vor, dass Sie dieses verwenden: https://github.com/videlalvaro/php-amqplib/ –
Sie sollten PHP-Drittanbieter besser über https://getcomposer.org/ verwenden. – smarber
Ihre receive.php/consumer sollte nur als Prozess über Terminal laufen. Er sollte dann Nachrichten abrufen, die sowohl vom Terminal- als auch vom Browser-Skript gesendet wurden. – OddEssay