Selamat petang, Habr! Saya ingin berkongsi buku rujukan buku ilmu yang berjaya saya kumpulkan RabbitMQ dan ringkaskan kepada cadangan dan kesimpulan ringkas.
jadual kandungan
- RabbitMQ. Bahagian 1. Pengenalan. Erlang, AMQP dan RPC
- RabbitMQ. Bahagian 2. Memahami Pertukaran
- RabbitMQ. Bahagian 3. Memahami Baris Gilir dan Ikatan
- RabbitMQ. Bahagian 4. Memahami apa itu mesej dan bingkai
- RabbitMQ. Bahagian 5: Penerbitan Mesej dan Prestasi Penggunaan
- RabbitMQ. Bahagian 6. Kajian semula modul Persekutuan dan Shovel
- RabbitMQ. Bahagian 7. Butiran tentang Sambungan dan Chanel
- RabbitMQ. Bahagian 8. RabbitMQ dalam .NET
- RabbitMQ. Bahagian 9. Pemantauan
Secara ringkas tentang AMQP
AMQP (Advanced Message Qeuing Protocol) ialah protokol terbuka untuk menghantar mesej antara komponen sistem. Idea asas ialah subsistem individu (atau aplikasi bebas) boleh bertukar-tukar mesej secara sewenang-wenangnya melalui broker AMQP, yang melakukan penghalaan, mungkin menjamin penghantaran, mengedarkan aliran data dan melanggan jenis mesej yang dikehendaki.
Protokol AMQP memperkenalkan tiga konsep:

exchange(tempat pertukaran atau pertukaran) - mesej dihantar kepadanya. Titik pertukaran mengedarkan mesej dalam satu atau lebih baris gilir. dia mengarahkan mesej ke baris gilir berdasarkan sambungan yang dibuat (binding) antara dia dan barisanqueue(baris gilir) - struktur data pada cakera atau dalam RAM yang menyimpan pautan kepada mesej dan memberikan salinan mesejconsumers(kepada pengguna)binding(mengikat) - peraturan yang memberitahu titik pertukaran yang mana baris gilir mesej ini harus dimasukkan
Protokol berjalan di atas .
Secara ringkas tentang Erlang
Kod sumber projek berada dalam repositori di . Seni bina berdasarkan dan BEAM.
Erlangdibangunkan oleh syarikatEricssonpada pertengahan 1980-an sebagai sistem masa nyata yang diedarkan, tahan terhadap kesalahan, untuk aplikasi yang memerlukan 99,999% masa beroperasi.Erlangdigunakan dalam pelbagai industri dan aplikasi moden, cth.
Secara ringkas tentang RabbitMQ
ialah broker mesej sumber terbuka. Ia mengarahkan mesej sepanjang semua prinsip asas protokol diterangkan dalam . RabbitMQ melaksanakan dan menambah protokol AMQP.
Idea utama model pemesejan dalam RabbitMQ perkara adalah producer (penerbit) tidak menghantar mesej terus ke baris gilir. Malah, dan selalunya, penerbit tidak tahu sama ada mesej itu akan dihantar ke mana-mana baris gilir sama sekali.
Sebaliknya, penerbit hanya boleh menghantar mesej kepada bursa. Di satu pihak, pertukaran menerima mesej daripada penerbit, dan sebaliknya, ia menghantarnya ke baris gilir. Pertukaran mesti tahu dengan tepat apa yang perlu dilakukan dengan mesej yang diterima. Perlukah ia ditambahkan pada baris gilir tertentu? Perlukah ia ditambahkan pada berbilang baris gilir? Atau mesej itu harus diabaikan.

Kerja ringkas RabbitMQ boleh digambarkan seperti berikut:
- Penerbit menghantar mesej kepada pertukaran tertentu
- Pertukaran, setelah menerima mesej, mengarahkannya ke satu atau lebih baris gilir mengikut peraturan yang mengikat antaranya dan baris gilir
- Baris gilir menyimpan rujukan kepada mesej ini. Mesej itu sendiri disimpan dalam RAM atau pada cakera
- Setelah pengguna bersedia untuk menerima mesej daripada baris gilir, pelayan mencipta salinan mesej melalui pautan dan menghantar
- Pengguna menerima mesej dan menghantar pengesahan kepada broker
- Broker, setelah menerima pengesahan, mengeluarkan salinan mesej daripada baris gilir. Kemudian padam dari RAM dan cakera
RPC
proses mendasari hampir semua interaksi dengan nukleus RabbitMQ. Contohnya, perbincangan awal tentang syarat pelanggan dengan RabbitMQ, menunjukkan proses tertentu RPC. Setelah urutan ini selesai, RabbitMQ akan bersedia untuk menerima permintaan daripada pelanggan:

Juga dalam spesifikasi AMQP kedua-dua pelanggan dan pelayan boleh mengeluarkan arahan. Ini bermakna pelanggan sedang menunggu untuk berkomunikasi dengan pelayan. Perintah adalah kelas dan kaedah. Sebagai contoh, Connection.Start – panggilan kaedah Start kelas Connection.
Sambungan dan saluran
Untuk pertukaran maklumat sedemikian antara pelanggan dan pelayan, saluran. Saluran dibuat dalam sambungan tertentu. Setiap saluran diasingkan daripada saluran lain. Dalam kes segerak, tidak mungkin untuk melaksanakan arahan seterusnya sehingga respons diterima.
Untuk dapat menghantar arahan secara selari, anda perlu membuka beberapa saluran. Setiap saluran mencipta saluran yang berasingan Erlang proses. Satu sambungan boleh mempunyai berbilang saluran (). Untuk setiap saluran terdapat struktur dan objek tertentu dalam ingatan. Oleh itu, semakin banyak saluran yang terdapat dalam satu sambungan, semakin banyak saluran RabbitMQ menggunakan lebih banyak memori untuk menguruskan sambungan sedemikian.

Contoh mudah untuk membuat sambungan dan menggunakan saluran :
// ...
private void TryConnect()
{
var factory = new ConnectionFactory()
{
HostName = "host_name",
UserName = "user_name",
Password = "p@ssword",
// Включение автоматичекого восстановления
// соединения после сбоев сети
AutomaticRecoveryEnabled = true
};
_connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
_channel = _connection.CreateModel();
// other options
}Membuka sambungan baharu untuk setiap operasi adalah sangat tidak digalakkan kerana ini akan menyebabkan kos yang tinggi. Saluran juga harus berterusan, tetapi banyak ralat protokol menyebabkan saluran ditutup, jadi jangka hayat saluran mungkin lebih pendek daripada sambungan.
Di manakah RabbitMQ digunakan?
Dalam konteks perkhidmatan mikro, protokol AMQP dan pelaksanaannya dalam RabbitMQ sering digunakan untuk interaksi tak segerak antara perkhidmatan.
Dalam konteks IIOT protokol AMQP dan pelaksanaannya dalam RabbitMQ digunakan untuk pertukaran data antara pelayan (server-server). Juga gunakan pemalam yang merupakan pelaksanaan protokol untuk menghantar data antara penderia dan pelayan dalam persekitaran berkelajuan rendah dan kependaman tinggi (senarai penuh protokol yang disokong disenaraikan di ).
Dalam artikel seterusnya kita akan mula memahami Pertukaran dengan lebih terperinci.
rujukan
Sumber: www.habr.com
