国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
Introduction
"Hello World"
(using the php-amqplib Client)
The php-amqplib client library
Sending(發(fā)送)
Sending doesn't work!(發(fā)布出去消息咋辦)
Receiving(接收消息)

rabbitmq php tutorial -一

Jun 13, 2016 am 11:53 AM
messages nbsp quot rabbitmq the

rabbitmq php tutorial -1

Introduction


RabbitMQ is a message broker. In essence, it accepts messages from?producers, and delivers them to?consumers. In-between, it can route, buffer, and persist the messages according to rules you give it.

RabbitMQ 是一個(gè)消息代理。說(shuō)白了,它從“生產(chǎn)者”接收消息,并將這些消息發(fā)送給“消費(fèi)者”。在這個(gè)過(guò)程中,它可以根據(jù)你給定的規(guī)則對(duì)消息進(jìn)行路由、緩沖和持久化。

RabbitMQ, and messaging in general, uses some jargon.(常用術(shù)語(yǔ))

  • Producing?means nothing more than sending. A program that sends messages is a?producer. We'll draw it like that, with "P":

  • 生產(chǎn)無(wú)非就是發(fā)送。一個(gè)發(fā)送消息的程序就是一個(gè)“生產(chǎn)者”,我們用“P”來(lái)表示它。
  • ?

  • A queue?is the name for a mailbox. It lives inside RabbitMQ. Although messages flow through RabbitMQ and your applications, they can be stored only inside a?queue. A?queue?is not bound by any limits, it can store as many messages as you like - it's essentially an infinite buffer. Many?producers?can send messages that go to one queue - many?consumers?can try to receive data from one?queue. A queue will be drawn like this, with its name above it:

  • 隊(duì)列就像是郵箱的名字。它存于RabbitMQ內(nèi)部。盡管消息流貫穿于RabbitMQ和你的應(yīng)用,但它只能存儲(chǔ)于隊(duì)列當(dāng)中。隊(duì)列不受任何限制,隨便你存多少消息,看你心情-隊(duì)列本質(zhì)上是一個(gè)無(wú)窮大的緩沖區(qū)。 多個(gè)“消費(fèi)者”可以發(fā)送消息給一個(gè)隊(duì)列-多個(gè)“消費(fèi)者”也可以從一個(gè)隊(duì)列接收消息。我們這樣來(lái)表示一個(gè)隊(duì)列(如下),上面是它的名字。
  • ?

  • Consuming?has a similar meaning to receiving. A?consumer?is a program that mostly waits to receive messages. On our drawings it's shown with "C":

  • 消費(fèi)意思就是接收?!毕M(fèi)者“通常是一個(gè)等待接受消息的程序。我們用“C”來(lái)表示。
  • ?

Note that the producer, consumer, and broker do not have to reside on the same machine; indeed in most applications they don't.

注意:生產(chǎn)者、消費(fèi)者和消息代理(中間人)不是必須在一個(gè)機(jī)器上,確實(shí)如此,大多數(shù)應(yīng)用程序都這樣。

"Hello World"

(using the php-amqplib Client)

In this part of the tutorial we'll write two programs in PHP; a producer that sends a single message, and a consumer that receives messages and prints them out. We'll gloss over some of the detail in the?php-amqplib?API, concentrating on this very simple thing just to get started. It's a "Hello World" of messaging.

在這一扒,我們會(huì)寫(xiě)倆PHP程序,一個(gè)發(fā)送單一消息的生產(chǎn)者,和一個(gè)接收消息并打印的消費(fèi)者。我們略過(guò)一些php-amqplib API的細(xì)節(jié),集中精力到這些簡(jiǎn)單的事兒上來(lái)開(kāi)個(gè)頭兒 —— 一個(gè)消息的Hello World程序。

In the diagram below, "P" is our producer and "C" is our consumer. The box in the middle is a queue - a message buffer that RabbitMQ keeps on behalf of the consumer.

在下面的圖表中,P是我們的生產(chǎn)者,C是我們的消費(fèi)者。中間內(nèi)筐就是個(gè)隊(duì)列-一個(gè)由RabbitMQ維持的消息緩沖區(qū)。

(P) -> [|||] -> (C)

The php-amqplib client library

RabbitMQ speaks?AMQP, which is an open, general-purpose protocol for messaging. There are a number of clients for AMQP in?many different languages. We'll use the php-amqplib in this tutorial.

RabbitMQ 遵循AMQP——一個(gè)開(kāi)放的、多用途的消息協(xié)議。還有若干不同語(yǔ)言的的AMQP客戶端。我們就用php-amqplib啦~

Add a composer.json file to your project: 在你的項(xiàng)目中添加一個(gè)composer.json文件,內(nèi)容如下:

{    "require": {        "videlalvaro/php-amqplib": "v2.1.0"    }}

Provided you have?composer?installed, you can run the following: 假使你已經(jīng)安裝了composer, 有可以執(zhí)行下面的命令:

$ composer.phar install

Now we have the php-amqplib installed, we can write some code.

現(xiàn)在php-amqplib安完了,寫(xiě)點(diǎn)code唄。

Sending(發(fā)送)

(P) -> [|||]

We'll call our message sender?send.php?and our message receiver?receive.php. The sender will connect to RabbitMQ, send a single message, then exit.

創(chuàng)建一個(gè)文件send.php來(lái)發(fā)消息,receive.php來(lái)收消息。發(fā)送方(send.php)連接RabbitMQ發(fā)送一條消息,然后退出程序。

In?send.php, we need to include the library and?use?the necessary classes:

send.php里,需要包含必要的庫(kù)及引入必要的類。

require_once __DIR__ . '/vendor/autoload.php';use PhpAmqpLib\Connection\AMQPConnection;use PhpAmqpLib\Message\AMQPMessage;

then we can create a connection to the server:

然后創(chuàng)建連接服務(wù)器的connection.

$connection = new AMQPConnection('localhost', 5672, 'guest', 'guest');$channel = $connection->channel();

The connection abstracts the socket connection, and takes care of protocol version negotiation and authentication and so on for us. Here we connect to a broker on the local machine - hence the?localhost. If we wanted to connect to a broker on a different machine we'd simply specify its name or IP address here.

這個(gè)連接幫我們做socket鏈接,處理協(xié)議版本談判和鑒定。這樣呢我們就鏈接到了本地的消息代理(broker),因?yàn)槭莑ocalhost嘛。如果想鏈接不同機(jī)器上的broker,簡(jiǎn)單的指定下名字或者IP地址就好啦,就是替換一下上面的localhost。

Next we create a channel, which is where most of the API for getting things done resides.

下面我們創(chuàng)建個(gè)信道——多數(shù)API干的活都在這里完成。

To send, we must declare a queue for us to send to; then we can publish a message to the queue:

為了能發(fā)送消息,必須聲明一個(gè)隊(duì)列。然后就可以發(fā)送消息到了。

$channel->queue_declare('hello', false, false, false, false);$msg = new AMQPMessage('Hello World!');$channel->basic_publish($msg, '', 'hello');echo " [x] Sent 'Hello World!'\n";

Declaring a queue is idempotent - it will only be created if it doesn't exist already. The message content is a byte array, so you can encode whatever you like there.

聲明隊(duì)列是冪等的——只有在它不存在的情況下才會(huì)被創(chuàng)建。消息內(nèi)容是字節(jié)數(shù)組,所以呢,你可以編碼一下隨便啥,放那替換下就能發(fā)。

Lastly, we close the channel and the connection;

末了,關(guān)閉信道和服務(wù)器連接。

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

Here's the whole send.php class. (這是整個(gè)send.php類文件)

Sending doesn't work!(發(fā)布出去消息咋辦)

If this is your first time using RabbitMQ and you don't see the "Sent" message then you may be left scratching your head wondering what could be wrong. Maybe the broker was started without enough free disk space (by default it needs at least 1Gb free) and is therefore refusing to accept messages. Check the broker logfile to confirm and reduce the limit if necessary. The?configuration file documentation?will show you how to setdisk_free_limit.

如果你頭一次用RabbitMQ并且沒(méi)看到"已發(fā)送(sent)"字樣的提示信息,然后剩下的就是撓頭了——為毛呢?哪錯(cuò)了?有可能是broker啟動(dòng)時(shí)木有足夠可用的硬盤(pán)空間(默認(rèn)需要至少1G),所以拒絕接受消息。檢查broker日志文件確定一下,有必要的話,調(diào)低下限值。這個(gè)配置文件會(huì)告訴你咋設(shè)置可用硬盤(pán)限值。

Receiving(接收消息)

That's it for our sender. Our receiver is pushed messages from RabbitMQ, so unlike the sender which publishes a single message, we'll keep it running to listen for messages and print them out.

發(fā)送者就是這么回事啦。接收者呢,顧名思義就是接收從RabbitMQ推送過(guò)來(lái)的消息,所以不像發(fā)送者哪有就發(fā)一條消息就完了。

我們保持接收者一直運(yùn)行來(lái)接收和打印消息。

[|||] -> (C)

The code (in?receive.php) has almost the same?include?and?uses as?send:

receive.php中include和use的代碼幾乎和send.php一樣。

require_once __DIR__ . '/vendor/autoload.php';use PhpAmqpLib\Connection\AMQPConnection;

Setting up is the same as the sender; we open a connection and a channel, and declare the queue from which we're going to consume. Note this matches up with the queue that?send publishes to.

設(shè)置也和上面一樣,打開(kāi)一個(gè)連接和信道,聲明一個(gè)我們要消費(fèi)(接收消息)的隊(duì)列。注意這里要和上面發(fā)送者的的聲明要對(duì)應(yīng)。

$connection = new AMQPConnection('localhost', 5672, 'guest', 'guest');$channel = $connection->channel();$channel->queue_declare('hello', false, false, false, false);echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";

Note that we declare the queue here, as well. Because we might start the receiver before the sender, we want to make sure the queue exists before we try to consume messages from it.

主要這里我們也同樣聲明了隊(duì)列。因?yàn)橛锌赡芪覀冊(cè)诎l(fā)送者發(fā)送消息之前就開(kāi)始接收了,所以在我們從中接收消息之前得確定存它在呀。

We're about to tell the server to deliver us the messages from the queue. We will define a?PHP callable?that will receive the messages sent by the server. Keep in mind that messages are sent asynchronously from the server to the clients.

我們得告訴服務(wù)器從隊(duì)列中給我們遞送消息。定義個(gè)回調(diào)來(lái)接收服務(wù)器發(fā)送的消息。記住啊,消息從服務(wù)器發(fā)送到客戶端是異步的啊。

$callback = function($msg) {  echo " [x] Received ", $msg->body, "\n";};$channel->basic_consume('hello', '', false, true, false, false, $callback);while(count($channel->callbacks)) {    $channel->wait();}

Our code will block while our?$channel?has callbacks. Whenever we receive a message our$callback?function will be passed the received message.

由于$channel有回調(diào),所以我們的代碼會(huì)阻塞?。ㄊ章?tīng)消息嘛,不是 bug哦),啥時(shí)候我們收到了消息,回調(diào)函數(shù)就會(huì)處理它啦。

Here's the whole receive.php class(完整的receive.php類文件)

Putting it all together(合體?。。。?/h3>

Now we can run both scripts. In a terminal, run the sender:

寫(xiě)都寫(xiě)完了,跑一下唄,先跑sender

$ php send.php

then, run the receiver:然后跑receiver

$ php receive.php

The receiver will print the message it gets from the sender via RabbitMQ. The receiver will keep running, waiting for messages (Use Ctrl-C to stop it), so try running the sender from another terminal.

內(nèi)個(gè),接收者會(huì)把從RabbitMQ接收的消息打印出來(lái),當(dāng)然這消息是發(fā)送者發(fā)給RabbitMQ的。接收者會(huì)在這死磕,一直跟這等消息(用Ctrl-C可以給干掉它),試試在其他的終端跑一下sender.

If you want to check on the queue, try using?rabbitmqctl list_queues.

要想看看這個(gè)隊(duì)列,用一下rabbitmqctl list_queues這個(gè)命令。(內(nèi)個(gè)。。在sbin/下呢哦,找不到的話)

Hello World! 你好呀,世界~~

Time to move on to?part 2?and build a simple?work queue. (敬請(qǐng)期待,哦吼吼吼~~)

Kenyataan Laman Web ini
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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276
Cara melaraskan tetapan sempadan tetingkap pada Windows 11: Tukar warna dan saiz Cara melaraskan tetapan sempadan tetingkap pada Windows 11: Tukar warna dan saiz Sep 22, 2023 am 11:37 AM

Windows 11 membawa reka bentuk yang segar dan elegan ke hadapan antara muka moden membolehkan anda memperibadikan dan menukar butiran terbaik, seperti sempadan tingkap. Dalam panduan ini, kami akan membincangkan arahan langkah demi langkah untuk membantu anda mencipta persekitaran yang mencerminkan gaya anda dalam sistem pengendalian Windows. Bagaimana untuk menukar tetapan sempadan tetingkap? Tekan + untuk membuka apl Tetapan. WindowsSaya pergi ke Pemperibadian dan klik Tetapan Warna. Perubahan Warna Tetingkap Sempadan Tetapan Tetingkap 11" Lebar="643" Tinggi="500" > Cari pilihan Tunjukkan warna aksen pada bar tajuk dan sempadan tetingkap, dan togol suis di sebelahnya. Untuk memaparkan warna aksen pada menu Mula dan bar tugas Untuk memaparkan warna tema pada menu Mula dan bar tugas, hidupkan Tunjukkan tema pada menu Mula dan bar tugas

Penyelesaian: Organisasi anda memerlukan anda menukar PIN anda Penyelesaian: Organisasi anda memerlukan anda menukar PIN anda Oct 04, 2023 pm 05:45 PM

Mesej "Organisasi anda memerlukan anda menukar PIN anda" akan muncul pada skrin log masuk. Ini berlaku apabila had tamat tempoh PIN dicapai pada komputer menggunakan tetapan akaun berasaskan organisasi, di mana mereka mempunyai kawalan ke atas peranti peribadi. Walau bagaimanapun, jika anda menyediakan Windows menggunakan akaun peribadi, sebaiknya mesej ralat tidak akan muncul. Walaupun ini tidak selalu berlaku. Kebanyakan pengguna yang mengalami ralat melaporkan menggunakan akaun peribadi mereka. Mengapa organisasi saya meminta saya menukar PIN saya pada Windows 11? Ada kemungkinan akaun anda dikaitkan dengan organisasi dan pendekatan utama anda adalah untuk mengesahkan perkara ini. Menghubungi pentadbir domain anda boleh membantu! Selain itu, tetapan dasar tempatan yang salah konfigurasi atau kunci pendaftaran yang salah boleh menyebabkan ralat. Sekarang ni

Bagaimana untuk menukar warna bar tajuk pada Windows 11? Bagaimana untuk menukar warna bar tajuk pada Windows 11? Sep 14, 2023 pm 03:33 PM

Secara lalai, warna bar tajuk pada Windows 11 bergantung pada tema gelap/terang yang anda pilih. Walau bagaimanapun, anda boleh menukarnya kepada mana-mana warna yang anda mahu. Dalam panduan ini, kami akan membincangkan arahan langkah demi langkah untuk tiga cara mengubahnya dan memperibadikan pengalaman desktop anda untuk menjadikannya menarik secara visual. Adakah mungkin untuk menukar warna bar tajuk tetingkap aktif dan tidak aktif? Ya, anda boleh menukar warna bar tajuk tetingkap aktif menggunakan apl Tetapan, atau anda boleh menukar warna bar tajuk tetingkap tidak aktif menggunakan Registry Editor. Untuk mempelajari langkah-langkah ini, pergi ke bahagian seterusnya. Bagaimana untuk menukar warna bar tajuk dalam Windows 11? 1. Tekan + untuk membuka tetingkap tetapan menggunakan apl Tetapan. WindowsSaya pergi ke "Peribadikan" dan kemudian

Bagaimana untuk mendayakan atau melumpuhkan pratonton lakaran kecil bar tugas pada Windows 11 Bagaimana untuk mendayakan atau melumpuhkan pratonton lakaran kecil bar tugas pada Windows 11 Sep 15, 2023 pm 03:57 PM

Lakaran kecil bar tugas boleh menjadi menyeronokkan, tetapi ia juga boleh mengganggu atau menjengkelkan. Memandangkan kekerapan anda menuding di atas kawasan ini, anda mungkin telah menutup tetingkap penting secara tidak sengaja beberapa kali. Kelemahan lain ialah ia menggunakan lebih banyak sumber sistem, jadi jika anda telah mencari cara untuk menjadi lebih cekap sumber, kami akan menunjukkan kepada anda cara untuk melumpuhkannya. Walau bagaimanapun, jika spesifikasi perkakasan anda boleh mengendalikannya dan anda menyukai pratonton, anda boleh mendayakannya. Bagaimana untuk mendayakan pratonton lakaran kecil bar tugas dalam Windows 11? 1. Menggunakan apl Tetapan ketik kekunci dan klik Tetapan. Windows klik Sistem dan pilih Perihal. Klik Tetapan sistem lanjutan. Navigasi ke tab Lanjutan dan pilih Tetapan di bawah Prestasi. Pilih "Kesan Visual"

10 Cara untuk Melaraskan Kecerahan pada Windows 11 10 Cara untuk Melaraskan Kecerahan pada Windows 11 Dec 18, 2023 pm 02:21 PM

Kecerahan skrin adalah bahagian penting dalam menggunakan peranti pengkomputeran moden, terutamanya apabila anda melihat skrin untuk jangka masa yang lama. Ia membantu anda mengurangkan ketegangan mata, meningkatkan kebolehbacaan dan melihat kandungan dengan mudah dan cekap. Walau bagaimanapun, bergantung pada tetapan anda, kadangkala sukar untuk mengurus kecerahan, terutamanya pada Windows 11 dengan perubahan UI baharu. Jika anda menghadapi masalah melaraskan kecerahan, berikut ialah semua cara untuk mengurus kecerahan pada Windows 11. Cara Menukar Kecerahan pada Windows 11 [10 Cara Diterangkan] Pengguna monitor tunggal boleh menggunakan kaedah berikut untuk melaraskan kecerahan pada Windows 11. Ini termasuk sistem desktop menggunakan monitor tunggal serta komputer riba. Jom mulakan. Kaedah 1: Gunakan Pusat Tindakan Pusat Tindakan boleh diakses

Paparkan panduan penskalaan pada Windows 11 Paparkan panduan penskalaan pada Windows 11 Sep 19, 2023 pm 06:45 PM

Kita semua mempunyai pilihan yang berbeza apabila ia berkaitan dengan penskalaan paparan pada Windows 11. Sesetengah orang suka ikon besar, ada yang suka ikon kecil. Walau bagaimanapun, kita semua bersetuju bahawa mempunyai penskalaan yang betul adalah penting. Penskalaan fon yang lemah atau penskalaan berlebihan imej boleh menjadi pembunuh produktiviti sebenar apabila bekerja, jadi anda perlu tahu cara menyesuaikannya untuk memanfaatkan sepenuhnya keupayaan sistem anda. Kelebihan Zum Tersuai: Ini adalah ciri yang berguna untuk orang yang mengalami kesukaran membaca teks pada skrin. Ia membantu anda melihat lebih banyak pada skrin pada satu masa. Anda boleh membuat profil sambungan tersuai yang digunakan hanya pada monitor dan aplikasi tertentu. Boleh membantu meningkatkan prestasi perkakasan kelas rendah. Ia memberi anda lebih kawalan ke atas perkara yang terdapat pada skrin anda. Cara menggunakan Windows 11

Bagaimana untuk Membetulkan Kod Ralat Pengaktifan 0xc004f069 dalam Pelayan Windows Bagaimana untuk Membetulkan Kod Ralat Pengaktifan 0xc004f069 dalam Pelayan Windows Jul 22, 2023 am 09:49 AM

Proses pengaktifan pada Windows kadangkala mengambil giliran secara tiba-tiba untuk memaparkan mesej ralat yang mengandungi kod ralat ini 0xc004f069. Walaupun proses pengaktifan adalah dalam talian, beberapa sistem lama yang menjalankan Windows Server mungkin mengalami masalah ini. Lakukan semakan awal ini dan jika ia tidak membantu anda mengaktifkan sistem anda, lompat ke penyelesaian utama untuk menyelesaikan isu tersebut. Penyelesaian – Tutup mesej ralat dan tetingkap pengaktifan. Kemudian, mulakan semula komputer anda. Cuba semula proses pengaktifan Windows dari awal lagi. Betulkan 1 – Aktifkan dari Terminal Aktifkan sistem Windows Server Edition dari terminal cmd. Peringkat – 1 Semak Versi Pelayan Windows Anda perlu menyemak jenis W yang anda gunakan

Cara membina aplikasi pemesejan yang boleh dipercayai dengan React dan RabbitMQ Cara membina aplikasi pemesejan yang boleh dipercayai dengan React dan RabbitMQ Sep 28, 2023 pm 08:24 PM

Cara membina aplikasi pemesejan yang boleh dipercayai dengan React dan RabbitMQ Pengenalan: Aplikasi moden perlu menyokong pemesejan yang boleh dipercayai untuk mencapai ciri seperti kemas kini masa nyata dan penyegerakan data. React ialah perpustakaan JavaScript yang popular untuk membina antara muka pengguna, manakala RabbitMQ ialah perisian tengah pemesejan yang boleh dipercayai. Artikel ini akan memperkenalkan cara menggabungkan React dan RabbitMQ untuk membina aplikasi pemesejan yang boleh dipercayai dan memberikan contoh kod khusus. Gambaran keseluruhan RabbitMQ:

See all articles