PHP RabbitMQ کے سب سے سادہ قوم یہ ہے کہ ایک پیدا کار اور ایک صارف ہوتا ہے، جیسا کہ نیچے تصویر میں دکھایا گیا ہے۔
وضاحت:
P پیدا کار کو ظاہر کرتا ہے، C صارف کو ظاہر کرتا ہے، اور لال رنگ قوم کو ظاہر کرتا ہے۔
فی الحال، جب PHP کے ساتھ RabbitMQ کام کر رہے ہیں، تو سرکاری طریقہ نامہ کی تجویز کردہ پیکیج php-amqplib ہے۔
1. پیش ہدائی
براہ کرم متعلقہ علم سمجھنے کے لئے نیچے دی گئی سیکشنز کو پہلے پڑھیں:
2. PHP dependencies کا انسٹال کریں
Composer کا استعمال کر کے انسٹال کریں:
composer require php-amqplib/php-amqplib
نوٹ: php-amqplib کا تازہ ترین ورژن PHP 7.0 یا اس سے اوپر کو مطلوب کرتا ہے۔
php-amqplib پیکیج شامل کریں:
require_once __DIR__ . '/vendor/autoload.php';
3. پیغام بھیجیں
3.1. RabbitMQ کنکشن بنائیں
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
پیرامیٹر کی وضاحت:
- new AMQPStreamConnection('RabbitMQ سرور کا پتا', پورٹ نمبر, 'صارف نام', 'پاس ورڈ');
3.2. چینل بنائیں
$channel = $connection->channel();
اکثر کام چینل میں مکمل ہوتے ہیں۔
3.3. قوم دعوت دار کریں
$channel->queue_declare('tizi365_hello', false, true, false, false);
3.4. پیغام بھیجیں
// پیغام کا ایک اشتہار کریں، پیرامیٹر پیغام مواد ہے جو ہمیں بھیجنا ہوگا
$msg = new AMQPMessage('Hello World!');
// کیا پیغام قائم ہے یا نہیں
// $msg->set('delivery_mode', AMQPMessage::DELIVERY_MODE_PERSISTENT);
// پیغام بھیجیں
$channel->basic_publish(
$msg, // پیغام اشتہار
'', // ایکسچینج نظر انداز کریں
'tizi365_hello' // راستہ پیرامیٹر، یہاں قوم کا نام راستہ پیرامیٹر کے طور پر استعمال کریں
);
3.5. PHP پیغام بھیجنے کا کوڈ مکمل کریں
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
// کنکشن تشکیل دیں
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
// چینل تشکیل دیں
$channel = $coonnection->channel();
// قوم کو دعوت دار کریں
$channel->queue_declare('tizi365_hello', false, false, false, false);
// پیغام کا اشتہار کریں
$msg = new AMQPMessage('Hello World!');
// پیغام بھیجیں
$channel->basic_publish($msg, '', 'tizi365_hello');
echo " [x] Sent 'Hello World!'\n";
$channel->close();
$connection->close();
فائل میں محفوظ کریں: send.php
4. پیغامات کا استعمال
پیغامات کا استعمال کرنے کے پہلے تین اقدامات (ایک ریبٹام queue تخلیق کرنا، ایک چینل تخلیق کرنا، ایک قیمت تصریح کرنا) پیغامات بھیجنے کی طرح ہی ہیں، جن کے مطابق قسم 3.1، 3.2، اور 3.3 ہیں۔
پورا استعمال کنندہ کوڈ مندرجہ ذیل ہے:
<?php require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
// ایک ریبٹام کنکشن تخلیق کریں
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
// ایک چینل تخلیق کریں
$channel = $connection->channel();
// ایک قیمت تصریح کریں
$channel->queue_declare('tizi365_hello', false, false, false, false);
echo " [*] پیغامات کا منتظر ہونا. باہر نکلنے کے لئے CTRL+C دبائیں\n";
// پیغام کا ہینڈلنگ فکشن مقرر کریں (یہاں ایک بے نام فکشن کا استعمال ہو رہا ہے)
$callback = function ($msg) {
// پیغام کا ہینڈلنگ منطق
echo ' [x] وصول کیا گیا ', $msg->body, "\n";
};
// ایک صارف کا مشترک بنائیں
$channel->basic_consume(
'tizi365_hello', // کیو نام جو استعمال کیا جانا چاہیے
'', // صارف ٹیگ، اگر نظر انداز کیا جائے تو ایک یونیک ID پیدا ہوتا ہے
false,
true, // کیا پیغام خود بخود تسلیم کیا جائے گا یعنی ریبٹام queue کو خود بخود بتانا کہ پیغام کامیابی سے پروسیس ہو گیا ہے
false,
false,
$callback // پیغام کا ہینڈلنگ فکشن
);
// اگر چینل بند نہیں ہوا ہو تو، پروسیس بلاک ہونے کے لئے روکیں تاکہ یہ بند نہ ہو جائے
while ($channel->is_open()) {
$channel->wait();
}
// وسائل کو رہا کریں
$channel->close();
$connection->close();
فائل میں محفوظ کریں: recv.php
5. ڈیمو کو چلانا
دو شیل ونڈوز کھولیں اور دو الگ-الگ اسکرپٹس کو علیحدہ طور پر چلائیں:
php recv.php
php send.php