Rumah >rangka kerja php >Swoole >Bagaimana Swooole menyokong operasi AMQP tak segerak

Bagaimana Swooole menyokong operasi AMQP tak segerak

WBOY
WBOYasal
2023-06-25 08:22:39992semak imbas

Dengan pertumbuhan berterusan volum perniagaan Internet, permintaan untuk konkurensi tinggi dan prestasi tinggi semakin tinggi, dan Swoole, sebagai rangka kerja komunikasi rangkaian untuk PHP, semakin digemari oleh pembangun. Antaranya, Swoole menyokong AMQP tak segerak, yang merupakan salah satu senario aplikasi yang lebih biasa. Jadi mari kita lihat bagaimana Swoole menyokong operasi AMQP tak segerak.

Pertama, kita perlu menjelaskan apa itu AMQP. AMQP (Advanced Message Qeuing Protocol) Advanced Message Qeuing Protocol ialah protokol rangkaian yang mentakrifkan cara menghantar mesej dengan selamat dan boleh dipercayai dalam sistem heterogen. AMQP berbeza daripada perkhidmatan pemesejan tradisional kerana ia menggunakan operasi tak segerak, yang boleh meningkatkan prestasi sistem dengan berkesan.

Untuk Swoole, menyokong operasi AMQP tak segerak adalah ciri yang mesti ada. Ia boleh bekerjasama dengan ciri I/O coroutine dan tak segerak yang disediakan oleh Swoole, membolehkan kami membangunkan aplikasi berprestasi tinggi dan berkonkurensi tinggi dengan cepat. Terdapat dua cara utama untuk melaksanakan AMQP tak segerak: sambungan AMQP menggunakan Swoole dan sambungan AMQP menggunakan PHP.

Sangat mudah untuk melaksanakan operasi AMQP tak segerak menggunakan sambungan AMQP Swoole. Kami hanya perlu menambah konfigurasi sambungan AMQP dalam fail konfigurasi Swoole untuk menggunakan sambungan secara terus:

$swoole_config = [
    'worker_num' => 4,
    'max_request' => 1000,
    'dispatch_mode' => 2,
    'enable_coroutine' => true,
    'amqp' => [
        'host' => '127.0.0.1',
        'port' => 5672,
        'user' => 'guest',
        'password' => 'guest',
        'vhost' => '/',
        'exchange' => 'amqp_demo_exchange',
        'queue' => 'amqp_demo_queue',
        'routing_key' => 'amqp_demo_routing_key',
    ],
];

Dalam konfigurasi di atas, kami boleh menambah parameter berkaitan sambungan AMQP, seperti alamat hos, port, nama pengguna, kata laluan , hos maya , nama suis, nama baris gilir, kunci penghalaan, dsb. Kemudian dalam coroutine Swoole, kami boleh terus menggunakan kaedah yang disediakan oleh sambungan AMQP untuk melaksanakan operasi AMQP tak segerak:

go(function () {
    $amqp = new SwooleAMQP($swoole_config['amqp']);
    $amqp->connect();

    $amqp->publish('hello swoole', $swoole_config['amqp']['routing_key']);

    $amqp->close();
});

Dalam kod di atas, kami mula-mula mencipta coroutine, dan kemudian membuat instantiate objek sambungan AMQP melalui sambungan AMQP Swoole, sambung ke pelayan AMQP yang ditentukan. Seterusnya, kami menggunakan kaedah penerbitan untuk menghantar mesej.

Selain menggunakan sambungan AMQP Swoole, kami juga boleh menggunakan sambungan AMQP PHP untuk melaksanakan operasi AMQP tak segerak. Ia memerlukan kami menambah konfigurasi sambungan AMQP dan konfigurasi sambungan AMQP PHP dalam fail konfigurasi Swoole, seperti yang ditunjukkan di bawah:

$swoole_config = [
    'worker_num' => 4,
    'max_request' => 1000,
    'dispatch_mode' => 2,
    'enable_coroutine' => true,
    'amqp' => [
        'host' => '127.0.0.1',
        'port' => 5672,
        'user' => 'guest',
        'password' => 'guest',
        'vhost' => '/',
        'exchange' => 'amqp_demo_exchange',
        'queue' => 'amqp_demo_queue',
        'routing_key' => 'amqp_demo_routing_key',
    ],
    'php_amqp' => [
        'host' => '127.0.0.1',
        'port' => 5672,
        'user' => 'guest',
        'password' => 'guest',
        'vhost' => '/',
    ],
];

Dalam konfigurasi di atas, kita dapat melihat bahawa sebagai tambahan kepada konfigurasi sambungan AMQP Swoole, ia juga menambah Konfigurasi sambungan AMQP PHP. Seterusnya, kami melaksanakan operasi AMQP tak segerak melalui sambungan AMQP PHP dalam coroutine Swoole:

go(function () {
    $conn = new AMQPConnection($swoole_config['php_amqp']);
    $conn->connect();

    $channel = new AMQPChannel($conn);

    $exchange = new AMQPExchange($channel);
    $exchange->setName($swoole_config['amqp']['exchange']);
    $exchange->setType(AMQP_EX_TYPE_DIRECT);
    $exchange->setFlags(AMQP_DURABLE);
    $exchange->declare();

    $queue = new AMQPQueue($channel);
    $queue->setName($swoole_config['amqp']['queue']);
    $queue->setFlags(AMQP_DURABLE);
    $queue->declare();
    $queue->bind($swoole_config['amqp']['exchange'], $swoole_config['amqp']['routing_key']);

    $exchange->publish('hello swoole', $swoole_config['amqp']['routing_key']);

    $conn->disconnect();
});

Dalam kod di atas, kami mula-mula mencipta objek AMQPConnection, menyambung ke pelayan AMQP yang ditentukan, dan kemudian mencipta objek AMQPChannel dan objek AMQPExchange dengan sifat berkaitan ditetapkan. Seterusnya, kami mencipta objek AMQPQueue, menetapkan sifat yang berkaitan dan menggunakan kaedah bind untuk mengikat baris gilir dan suis bersama-sama. Akhir sekali, gunakan kaedah terbitkan untuk menghantar mesej.

Untuk meringkaskan, Swoole boleh menyokong operasi AMQP tak segerak, yang sangat berguna dalam senario aplikasi berkonkurensi tinggi dan berprestasi tinggi. Sama ada menggunakan sambungan AMQP Swoole atau sambungan AMQP PHP, kami perlu menambah konfigurasi yang berkaitan pada fail konfigurasi Swoole dan kemudian melaksanakan operasi AMQP tak segerak dalam coroutine. Saya harap artikel ini akan membantu anda memahami cara menggunakan Swoole untuk melaksanakan operasi AMQP tak segerak!

Atas ialah kandungan terperinci Bagaimana Swooole menyokong operasi AMQP tak segerak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn