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