Apakah mungkin menerapkan komunikasi dua arah antara klien dan server dengan Apache Thrift? Jadi bukan hanya bisa membuat RPC dari client ke server saja, tapi juga sebaliknya? Dalam proyek saya, saya memiliki persyaratan bahwa server juga harus mendorong beberapa data ke klien tanpa diminta oleh klien sebelumnya untuk melakukan ini.
Gunakan Apache Thrift untuk komunikasi dua arah?
Jawaban (2)
Ada dua cara untuk mencapai hal ini dengan Thrift.
Jika kedua ujungnya kurang lebih sama dan Anda menghubungkannya melalui soket atau pipa, Anda cukup menyiapkan server dan klien di kedua ujungnya dan Anda sudah cukup selesai. Namun, ini tidak berfungsi di semua kasus, terutama dengan HTTP.
Jika Anda menghubungkan server dan klien melalui HTTP atau saluran serupa, ada teknik yang disebut "jajak pendapat panjang". Pada dasarnya ini mengharuskan klien untuk memanggil server seperti biasa, tetapi panggilan tersebut hanya akan kembali ketika server ingin mengirim beberapa data kembali ke klien. Setelah menerima data, klien memulai panggilan lain jika dia masih tertarik pada lebih banyak data.
Seperti yang ditunjukkan Denis, bergantung pada kasus penggunaan Anda, Anda mungkin ingin mempertimbangkan untuk menggunakan sistem MQ. Perhatikan bahwa Thrift masih dapat digunakan untuk membatalkan/membuat serial pesan ke dalam dan dari antrean. folder contrib memiliki beberapa contoh yang menunjukkan cara menggunakan Thrift dengan ZMQ, Rebus dan beberapa lainnya.
Anda lebih baik menggunakan antrian, mis. NolMQ.