2015-01-09 10 views
6

मैं संदेश भेजने और प्राप्त करने के लिए php-amqplib का उपयोग करने का प्रयास कर रहा हूं। यह टर्मिनल पर भेजने/प्राप्त करने का काम करता है। लेकिन जब वेब ब्राउज़र के लिए जाते हैं, कतार से प्राप्त करने में असमर्थ यह लगातार संदेश के लिए इंतजार कर रहा है। मैं receive.php के लिए नीचे दिए गए कोड का इस्तेमाल कियावेब ब्राउज़र पर php-amqplib rabbitMQ का उपयोग कैसे करें

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(); 

यह अगर मैं कॉलबैक फ़ंक्शन के बजाय नीचे का उपयोग लेकिन कतार से उपभोग नहीं करता है

$abc=$channel->basic_get("test22", false, 2);  
if(!empty($abc)) 
{ 
print_r($abc->body); 
} 

इसका मतलब संदेशों कतार में उपलब्ध हैं 'पंक्ति से पहले संदेश हो जाता है test22 '। मुझे कोई सुराग दें।

+1

लाइब्रेरी का आप किस संस्करण का उपयोग कर रहे हैं? पुस्तकालय के आधुनिक संस्करणों में अब इस फ़ाइल 'amqp.inc' का उपयोग नहीं किया जाता है। मेरा सुझाव है कि आप इसका उपयोग करें: https://github.com/videlalvaro/php-amqplib/ –

+0

आप https://getcomposer.org/ के माध्यम से PHP तीसरे पक्ष का बेहतर उपयोग करेंगे। – smarber

+0

आपका get.php/उपभोक्ता केवल प्रक्रिया के रूप में टर्मिनल के माध्यम से चलाया जाना चाहिए। इसके बाद इसे टर्मिनल या ब्राउज़र रन स्क्रिप्ट दोनों से भेजे गए संदेशों को खींचना चाहिए। – OddEssay

उत्तर

1

echo $msg->body; से error_log($msg->body); (या अन्य लॉगगिन सिस्टम जिसका आप उपयोग कर रहे हैं) बदलें। मुझे लगता है कि आप शायद लॉग पर संदेश देखेंगे। वेब ब्राउज़र पर पृष्ठ पहले ही लोड हो चुका है, इसलिए स्क्रिप्ट को संदेश प्राप्त होने पर भी यह नहीं बदलेगा।

+0

उत्कृष्ट जवाब। मुझे @Prak के समान समस्या थी; आपके उत्तर ने मेरी समस्या हल की। –

संबंधित मुद्दे