rabbitmq phpノート

2165 ワード

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
//   
public function send2(){
    //  rabbitmq                         
    $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
    $channel = $connection->channel();
    //      true ,       ,        
    $channel->queue_declare('task_queue', false, true, false, false);

    $data = "Hello World!";
    //  delivery_mode         
    $msg = new AMQPMessage(
        $data,
        array('delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT)
    );
    //      
    $channel->basic_publish($msg, '', 'task_queue');

    echo ' [x] Sent ', $data, "
"; // $channel->close(); $connection->close(); }
use PhpAmqpLib\Connection\AMQPStreamConnection;
//       cli  
public function receive2(){

    $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
    $channel = $connection->channel();
    //        true,      true ,       ,        
    $channel->queue_declare('task_queue', false, true, false, false);

    echo " [*] Waiting for messages. To exit press CTRL+C
"; $callback = function ($msg) { echo ' [x] Received ', $msg->body, "
"; sleep(2); echo " [x] Done
"; /**** ****/ // ack $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']); }; // , , $channel->basic_qos(null, 1, null); // , // false , true $channel->basic_consume('task_queue', '', false, false, false, false, $callback); while ($channel->is_consuming()) { $channel->wait(); } $channel->close(); $connection->close(); }

公式ドキュメント
https://xiaoxiami.gitbook.io/rabbitmq_into_chinese_php/ying-yong-jiao-cheng/php-ban/1-hello_world