Próbuję użyć php-amqplib do wysyłania i odbierania wiadomości. Działa wysyłanie/odbieranie na terminalu. Ale po przejściu do przeglądarki internetowej, nie może odbierać z kolejki, ciągle czeka na wiadomość. Użyłem poniżej kod do receive.phpJak używać php-amqplib rabbitMQ na przeglądarce internetowej
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();
Robi się pierwszy komunikat z kolejki, jeśli mogę użyć poniżej zamiast funkcji zwrotnej, ale nie spożywać z kolejki
$abc=$channel->basic_get("test22", false, 2);
if(!empty($abc))
{
print_r($abc->body);
}
Oznacza to wiadomości są dostępne w kolejce " test22 '. daj mi jakąkolwiek wskazówkę.
Jaką wersję biblioteki używasz? Ten plik 'amqp.inc' nie jest już używany we współczesnych wersjach biblioteki. Proponuję użyć tego: https://github.com/videlalvaro/php-amqplib/ –
Lepiej skorzystaj z php firmy zewnętrznej przez https://getcomposer.org/. – smarber
Twój plik receive.php/konsument powinien być uruchamiany tylko przez terminal jako proces. Powinien następnie pobrać komunikaty wysłane zarówno ze skryptów uruchamianych z poziomu terminala, jak i przeglądarki. – OddEssay