
Baru-baru ini, mereka berhasil menugaskan sistem pemrosesan pengguna untuk warga negara. Intinya adalah bahwa ketika Anda tidak memiliki air, pemanas atau lubang besar di jalan dekat rumah Anda, Anda dapat mengeluh tentang masalah di lembaga pemerintah. Ada berbagai platform tempat Anda dapat mengajukan keluhan: situs web lembaga negara, halaman di jejaring sosial, pusat panggilan.
Tugas kami adalah membuat satu saluran pipa untuk memproses aplikasi untuk semua departemen.
Tujuan utama dari sistem ini adalah untuk mempercepat proses pemrosesan panggilan sebanyak mungkin: mengotomatiskan semuanya secara otomatis, mengontrol waktu pada setiap tahap proses, menginformasikan warga tentang setiap langkah.
Salah satu tugas khusus dari proyek ini adalah masalah integrasi dengan sejumlah besar sistem eksternal.
- Penting untuk belajar dari situs yang berbeda untuk mengambil seluruh aliran pengaduan, untuk dapat berkomunikasi dengan mereka tentang semua perubahan dengan aplikasi, untuk melakukan korespondensi antara pelayan publik dan warga negara pada klarifikasi rincian pengaduan.
- Selain itu, kami memberikan beberapa fungsi ke layanan pihak ketiga.
Karena Ada banyak data, sering harus bekerja dalam mode asinkron, maka tim proyek harus menyelesaikan masalah, agar tidak mencekik dirinya sendiri dan sistem pihak ketiga. Solusinya ditemukan di broker pesan perangkat lunak Rabbit MQ. Itu adalah teknologi baru untuk tim pada waktu itu.
Di bawah ini adalah wawancara dengan pengembang backend proyek, Alexander Shcheglov,
WilyLynx , yang menangani masalah ini dan mengimplementasikan integrasi.
- Sasha, halo! Tolong beri tahu kami apa itu Rabbit MQ?Perangkat lunak ini dimaksudkan terutama untuk penerapan pengiriman pesan yang tertunda antara klien yang berbeda, yaitu ketika Anda tidak membutuhkan jawaban sekarang.
- Saya mengerti benar bahwa secara umum berfungsi seperti ini: layanan pengiriman dalam antrian yang dibuat menempatkan data seperti yang dihasilkan, layanan penerima mengambil informasi ini seperlunya?Itulah tepatnya yang berhasil.
- Mengapa Anda (tim pengembangan) memilih solusi ini untuk proyek?Karena beberapa alasan. Pertama, dalam kasus kami, pemrosesan sinkron (diterima dan diproses pada saat yang sama) tidak penting, mis. sebuah pesan dapat bertahan dalam antrian untuk sementara waktu. Selain itu, kemudahan penggunaan: untuk menerima pesan, Anda hanya perlu mendeklarasikan nama antrian dan tidak perlu menulis layanan Anda. Nah, ketersediaan perpustakaan untuk YP umum. Tidak perlu menemukan apa pun untuk bekerja dengan RabbitMQ.
- Saya mengerti benar bahwa Rabbit MQ memungkinkan Anda untuk mengontrol pertukaran data antara sistem dan layanan web?Sebaliknya, kami masih mengelola pertukaran, tetapi "kelinci" adalah alat yang sangat baik untuk mengatur pertukaran ini. Di sini Anda memiliki waktu hidup pesan dalam antrian, dan panjang antrian maksimum, dan pengaturan akses, dan pengelompokan, dan berbagai protokol pertukaran, dan sistem plug-in dan banyak lagi.
- Bagaimana menentukan bahwa pesan telah dikirim? - yaitu, bagaimana ditentukan bahwa klien telah memperpanjang sesuatu setelah diterimanya atau telah tergantung dalam proses?Itu dianggap dikirim jika, dalam periode waktu tertentu, respons dari klien datang. Itu, pada kenyataannya, mengatakan bahwa ia menerima dan senang dengan kehidupan. Klien dapat mengirim respons segera setelah diterima, dan kemudian mencoba memproses pesan. Mungkin, sebaliknya, coba proses terlebih dahulu dan, jika berhasil, kirim tanggapan. Atau Anda bisa memberi tahu kelinci terlebih dahulu sehingga dia tidak menunggu konfirmasi pengiriman dari Anda dan hanya menerima pesan. Semua barang yang dikirim akan secara otomatis dianggap terkirim.
- Apakah mungkin, misalnya, entah bagaimana menerima tidak semua pesan, tetapi misalnya hanya berlangganan pesan pada aplikasi tertentu?Ada situasi yang sedikit berbeda. Ada opsi untuk mengirim pesan di mana pesan datang ke semua pelanggan. Opsi ini disebut "publikasikan / berlangganan". Contoh yang baik: pesan baru di publik Anda. Anda mengirim, semua penandatangan diterima. Dan setelah diterima mereka berpikir untuk membaca atau tidak membaca. Secara umum, tidak ada yang mengganggu Anda untuk membuat antrian tersendiri untuk Anda dan hanya bekerja dengannya. Dalam hal ini, perutean akan berada pada level aplikasi, dan kelinci sebagai saluran komunikasi.
- Sasha, katakan padaku, apakah ada opsi untuk tidak membuat ribuan antrian, tetapi untuk melakukan penyaringan dan perutean satu?Dari satu itu tidak akan berfungsi, tetapi Rabbit akan memungkinkan beberapa routing dilakukan.
- Tolong beri tahu kami lebih lanjut.Salah satunya tidak, tetapi ada konsep seperti "pertukaran" dan "kunci perutean":
P - produser, pengirim pesan sebagai gantinya
X - tukar sendiri
Garis merah - garis
C1 dan C2 - penerima

Pabbit dapat mengirim pesan sebagai ganti dengan kunci tertentu (misalnya, kesalahan / info / peringatan). Dan seperti yang Anda lihat, penerima yang berbeda diarahkan untuk menerima pesan dengan tombol perutean yang berbeda. Selain itu, hanya C2 yang akan menerima pesan dengan kunci "info", dan keduanya akan menerima pesan dengan kunci "kesalahan". Dimungkinkan juga untuk menerima pesan sesuai dengan templat untuk kunci tersebut. Ini untuk jenis pertukaran “Publikasikan / Berlangganan” lain, yang saya sebutkan sebelumnya.

Seperti yang dapat Anda lihat, dalam hal apa pun, untuk masing-masing penerima dalam jenis pertukaran ini ada perubahan, tetapi pada akhirnya kami masih memiliki semacam penyaringan / perutean.
- Apa yang bisa Anda ingat masalah yang muncul selama studi dan implementasi Kelinci?Selain kemalasan, tidak. Serius, jelas dokumentasi, banyak contoh.
- Sudahkah Anda mentransfer semua pertukaran dengan layanan dan sistem eksternal ke sana?Kami sekarang memiliki 38 antrian: pertukaran antar sirkuit, sistem eksternal, BI. Namun sayangnya, beberapa layanan (baca departemen) menolak. karena mereka telah menerapkan istirahat. Selain itu, beberapa jenis interaksi melibatkan penerimaan tanggapan secara simultan terhadap permintaan.
- Bagaimana menurut Anda, seberapa sukses keputusan ini?Untuk kolaborasi antarlembaga yang tidak memerlukan respons sinkron? Bagi saya, ini pilihan yang bagus.
Daftar bahan yang digunakan