Gunakan Apache Thrift untuk komunikasi dua arah?

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.


person Thomas W.    schedule 26.02.2015    source sumber


Jawaban (2)


Ada dua cara untuk mencapai hal ini dengan Thrift.

  1. 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.

  2. 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.

person JensG    schedule 26.02.2015

Anda lebih baik menggunakan antrian, mis. NolMQ.

person Denis Kulagin    schedule 26.02.2015
comment
Saya tidak yakin apakah itu a) menjawab pertanyaan dan b) sesuai dengan kasus penggunaan yang tidak diberitahukan secara cukup rinci oleh OP. Dengan asumsi Anda dapat mengatur koneksi ZMQ (yang bahkan bukan sistem MQ sebenarnya) mengasumsikan hal-hal tertentu yang belum kita ketahui. - person JensG; 26.02.2015