PHP RabbitMQ का सबसे सरल कतार मोड एक प्रोड्यूसर और एक कंज्यूमर से बनता है, जैसा कि नीचे वार्ता में दिखाया गया है. PHP RabbitMQ स्पष्टीकरण: P का प्रोड्यूसर को दर्शाता है, C कंज्यूमर को दर्शाता है, और लाल वार्ता को कतार को दर्शाता है।

वर्तमान में, PHP के साथ RabbitMQ को ऑपरेट करते समय, आधिकारिक रूप से सिफारिश किया जाता है कि php-amqplib को पैकेज किया जाए।

1. पूर्व-सिखलाई

कृपया संबंधित जानकारी को समझने के लिए पहले निम्नलिखित खंड पढ़ें:

2. PHP विशिष्टताएँ स्थापित करें

कोम्पोजर का उपयोग करके स्थापित करें:

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('नमस्ते दुनिया!');
// क्या संदेश सहर्षी है
// $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 = $connection->channel();
// कतार घोषित करें
$channel->queue_declare('tizi365_hello', false, false, false, false);

// संदेश वस्त्रिका की परिभाषा करें
$msg = new AMQPMessage('नमस्ते दुनिया!');
// संदेश भेजें
$channel->basic_publish($msg, '', 'tizi365_hello');

echo " [x] Sent 'नमस्ते दुनिया!'\n";

$channel->close();
$connection->close();

फ़ाइल में सहेजें: send.php

4. संदेशों का उपभोक्ता बनाना

संदेश का उपभोक्ता बनाने के पहले तीन कदम (रैबिटएमक्यू कनेक्शन बनाना, चैनल बनाना, कतरा घोषित करना) संदेश भेजने के समान होते हैं, जो अनुसरण करते हैं 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', // उपभोक्ता नाम जो खप्पा जाएगा
    '', // उपभोक्ता टैग, यदि छोड़ा जाए, तो एक अद्वितीय आईडी उत्पन्न हो जाता है
    false,
    true, // क्या संदेश को स्वचालित रूप से स्वीकार किया जाए, अर्थात्, स्वचालित रूप से रैबिटएमक्यू को बताना कि संदेश सफलतापूर्वक प्रसंस्कृत किया गया है
    false,
    false,
    $callback // संदेश हैंडलिंग फ़ंक्शन
);

// अगर चैनल बंद नहीं है, तो प्रक्रिया को ब्लॉक किए रखने के लिए प्रक्रिया बंद न करें
while ($channel->is_open()) {
    $channel->wait();
}

// संसाधन रिलीज करें
$channel->close();
$connection->close();

फ़ाइल में सहेजें: recv.php

5. डेमो चलाना

दो शैल विंडोज़ खोलें और दो अलग-अलग स्क्रिप्ट को अलग-अलग से चलाएं:

php recv.php

php send.php