Dalam operasi API aplikasi HSF, operasi utama mencakup pembuatan bean penyedia dan bean konsumen.
Informasi latar belakang
Empat kelas operasi disediakan berdasarkan kasus penggunaan:
com.taobao.hsf.app.api.util.HSFApiProviderBean: Membuat bean penyedia menggunakan metode pemrograman API.
com.taobao.hsf.app.api.util.HSFApiConsumerBean: Membuat bean konsumen menggunakan metode pemrograman API.
com.taobao.hsf.app.spring.util.HSFSpringProviderBean: Membuat bean penyedia menggunakan metode konfigurasi Spring.
com.taobao.hsf.app.spring.util.HSFSpringConsumerBean: Membuat bean konsumen menggunakan metode konfigurasi Spring.
Properti konfigurasi HSFSpringXxxBean sesuai dengan metode setter dari HSFApiXxxBean. Berikut ini menjelaskan empat kelas operasi API dari aspek bean penyedia dan bean konsumen.
Informasi dependensi
Tambahkan dependensi berikut ke file pom.xml:
<dependency>
<groupId>com.alibaba.edas</groupId>
<artifactId>edas-sdk</artifactId>
<version>{version}</version>
</dependency>ProviderBean
Metode Pemrograman API - HSFApiProviderBean
Anda dapat mempublikasikan layanan HSF dengan mengonfigurasi dan menginisialisasi com.taobao.hsf.app.api.util.HSFApiProviderBean.
Konfigurasi dan inisialisasi com.taobao.hsf.app.api.util.HSFApiProviderBean hanya diimplementasikan sekali untuk layanan yang sama. Disarankan untuk menyimpan objek HSFApiProviderBean karena kompleksitasnya.
Contoh Kode
// Instansiasi dan konfigurasikan sebuah bean penyedia. HSFApiProviderBean hsfApiProviderBean = new HSFApiProviderBean(); hsfApiProviderBean.setServiceInterface("com.taobao.hsf.test.HelloWorldService"); hsfApiProviderBean.setTarget(target); // target menunjukkan objek implementasi dari operasi yang ditentukan oleh serviceInterface. hsfApiProviderBean.setServiceVersion("1.0.0"); hsfApiProviderBean.setServiceGroup("HSF"); // Inisialisasi bean penyedia untuk publikasi layanan. hsfApiProviderBean.init();Tabel Properti yang Dapat Dikonfigurasi
Selain properti yang ditentukan dalam contoh kode sebelumnya, HSFApiProviderBean mencakup banyak properti lain yang dapat dikonfigurasi. Anda dapat menggunakan metode setter yang sesuai untuk mengonfigurasi properti tersebut.
Nama Properti
Tipe
Diperlukan
Nilai Default
Deskripsi
serviceInterface
String
Ya
Tidak ada
Menentukan operasi yang digunakan untuk menyediakan layanan HSF. Konsumen berlangganan layanan menggunakan properti ini.
target
Object
Ya
Tidak ada
Menentukan objek implementasi layanan dari operasi yang ditentukan oleh serviceInterface.
serviceVersion
String
Tidak
1.0.0
Menentukan nomor versi layanan. Konsumen berlangganan layanan menggunakan properti ini.
serviceGroup
String
Tidak
HSF
Menentukan grup layanan. Konsumen berlangganan layanan menggunakan properti ini.
serviceDesc
String
Tidak
Tidak ada
Menentukan deskripsi layanan untuk kemudahan manajemen.
clientTimeout
int
Tidak
3000
Menentukan periode waktu habis untuk respons. Unit: milidetik. Jika penyedia tidak memberikan respons dalam periode waktu habis, HSFTimeOutException akan dilempar.
methodSpecials
MethodSpecial[]
Tidak
Tidak ada
Menentukan periode waktu habis untuk beberapa metode dalam layanan. Tentukan parameter MethodSpecial.methodName sebagai nama metode dan tentukan parameter MethodSpecial.clientTimout sebagai periode waktu habis untuk metode saat ini. Properti ini memiliki prioritas lebih tinggi daripada clientTimeout untuk penyedia saat ini.
preferSerializeType
String
Tidak
hessian2
Menentukan metode serialisasi untuk parameter permintaan layanan dan hasil respons layanan untuk HSF2. Nilai valid: java, hessian, hessian2, json, dan kryo.
corePoolSize
String yang nilainya adalah integer
Tidak
0
Mengonfigurasi thread pool terpisah untuk layanan dan menentukan jumlah minimum thread aktif. Secara default, thread pool publik penyedia HSF digunakan jika properti ini tidak ditentukan.
maxPoolSize
String yang nilainya adalah integer
Tidak
0
Mengonfigurasi thread pool terpisah untuk layanan dan menentukan jumlah maksimum thread aktif. Secara default, thread pool publik penyedia HSF digunakan jika properti ini tidak ditentukan.
Metode Konfigurasi Spring - HSFSpringProviderBean
Anda dapat mempublikasikan layanan HSF dengan mengonfigurasi bean dari kelas com.taobao.hsf.app.spring.util.HSFSpringProviderBean dalam profil Spring.
Contoh Kode
<bean id="helloWorldService" class="com.taobao.hsf.test.HelloWorldService" /> <bean class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init"> <! -- [Diperlukan] Tentukan operasi yang digunakan untuk menyediakan layanan HSF secara eksternal. --> <property name="serviceInterface" value="com.taobao.hsf.test.HelloWorldService" /> <! -- [Diperlukan] Tentukan objek implementasi layanan dari operasi yang ditentukan oleh serviceInterface. Secara spesifik, objek tersebut adalah ID bean Spring dari layanan HSF yang akan dipublikasikan. --> <property name="target" ref="helloWorldService" /> <! -- [Opsional] Tentukan nomor versi layanan. Nilai default adalah 1.0.0. --> <property name="serviceVersion" value="1.0.0" /> <! -- [Opsional] Tentukan grup tempat layanan berada. Nilai default adalah HSF. --> <property name="serviceGroup" value="HSF" /> <! -- [Opsional] Tentukan deskripsi layanan untuk kemudahan manajemen. Nilai default adalah null. --> <property name="serviceDesc" value="HelloWorldService diberikan oleh HSF" /> <! -- [Opsional] Tentukan periode waktu habis untuk respons dalam milidetik. Jika penyedia tidak memberikan respons dalam periode yang ditentukan, HSFTimeOutException akan dilempar. --> <! -- Nilai default adalah 3000 ms. --> <property name="clientTimeout" value="3000"/> <! -- [Opsional] Tentukan periode waktu habis untuk beberapa metode dalam layanan. Properti ini memiliki prioritas lebih tinggi daripada clientTimeout. --> <! -- Tentukan parameter MethodSpecial.methodName sebagai nama metode dan tentukan parameter MethodSpecial.clientTimout sebagai periode waktu habis untuk metode saat ini. --> <property name="methodSpecials"> <list> <bean class="com.taobao.hsf.model.metadata.MethodSpecial"> <property name="methodName" value="sum" /> <property name="clientTimeout" value="2000" /> </bean> </list> </property> <! -- [Opsional] Tentukan metode serialisasi untuk parameter permintaan dan hasil respons layanan. Nilai valid: java, hessian, hessian2, json, dan kryo. --> <! -- Nilai default adalah hessian2. --> <property name="preferSerializeType" value="hessian2"/> <! -- [Opsional] Mengonfigurasi thread pool terpisah untuk layanan dan menentukan jumlah minimum thread aktif. Secara default, thread pool publik penyedia HSF digunakan jika properti ini tidak ditentukan. --> <property name="corePoolSize" value="10"/> <! -- [Opsional] Mengonfigurasi thread pool terpisah untuk layanan dan menentukan jumlah maksimum thread aktif. Secara default, thread pool publik penyedia HSF digunakan jika properti ini tidak ditentukan. --> <property name="maxPoolSize" value="60"/> </bean>
ConsumerBean
Metode Pemrograman API - HSFApiConsumerBean
Anda dapat berlangganan layanan HSF dengan mengonfigurasi dan menginisialisasi com.taobao.hsf.app.api.util.HSFApiConsumerBean.
Konfigurasi dan inisialisasi com.taobao.hsf.app.api.util.HSFApiConsumerBean hanya diimplementasikan sekali untuk layanan yang sama.
Disarankan untuk menyimpan objek HSFApiConsumerBean dan agen HSF yang diambil karena ukuran objeknya besar.
CatatanDalam HSF, HSFApiConsumerBean menyimpan konfigurasi layanan. Jika layanan yang dilanggan dikonfigurasi beberapa kali, hanya konfigurasi pertama yang berlaku.
Contoh Kode
// Instansiasi dan konfigurasikan sebuah bean konsumen. HSFApiConsumerBean hsfApiConsumerBean = new HSFApiConsumerBean(); hsfApiConsumerBean.setInterfaceName("com.taobao.hsf.test.HelloWorldService"); hsfApiConsumerBean.setVersion("1.0.0"); hsfApiConsumerBean.setGroup("HSF"); // Inisialisasi bean konsumen untuk langganan layanan. // true menunjukkan menunggu dorongan alamat (periode waktu habis: 3000 ms). Nilai default adalah false dan menunjukkan panggilan sinkron. hsfApiConsumerBean.init(true); // Ambil agen HSF. HelloWorldService helloWorldService = (HelloWorldService) hsfApiConsumerBean.getObject(); // Lakukan panggilan HSF. String helloStr = helloWorldService.sayHello("Li Lei");Tabel Properti yang Dapat Dikonfigurasi
Selain properti yang ditentukan dalam contoh kode sebelumnya, HSFApiConsumerBean mencakup banyak properti lain yang dapat dikonfigurasi. Anda dapat menggunakan metode setter yang sesuai untuk mengonfigurasi properti tersebut.
Nama Properti
Tipe
Diperlukan
Nilai Default
Deskripsi
interfaceName
String
Ya
Tidak ada
Menentukan nama antarmuka untuk langganan layanan. Konsumen berlangganan layanan menggunakan properti ini.
version
String
Ya
Tidak ada
Menentukan nomor versi layanan yang dilanggan. Konsumen berlangganan layanan menggunakan properti ini.
group
String
Ya
Tidak ada
Menentukan grup layanan yang dilanggan. Konsumen berlangganan layanan menggunakan properti ini.
clientTimeout
int
Tidak
Tidak ada
Menentukan periode waktu habis untuk permintaan. Unit: milidetik. Jika konsumen tidak menerima respons dari penyedia, HSFTimeOutException akan dilempar. clientTimeout yang ditentukan untuk konsumen memiliki prioritas lebih tinggi daripada clientTimeout yang ditentukan untuk penyedia. Jika clientTimeout tidak ditentukan untuk konsumen, clientTimeout yang ditentukan untuk penyedia digunakan selama panggilan layanan jarak jauh.
methodSpecials
MethodSpecial[]
Tidak
Tidak ada
Menentukan periode waktu habis untuk beberapa metode dalam layanan. Tentukan parameter MethodSpecial.methodName sebagai nama metode dan tentukan parameter MethodSpecial.clientTimout sebagai periode waktu habis untuk metode tersebut. Properti ini memiliki prioritas lebih tinggi daripada clientTimeout untuk konsumen saat ini.
maxWaitTimeForCsAddress
int
Tidak
Tidak ada
Menentukan waktu untuk tunggu sinkron Config Server mendorong alamat. Unit: milidetik. Properti ini mencegah HSFAddressNotFoundException terjadi ketika layanan dipanggil sebelum alamat didorong. Kami menyarankan Anda menyetel properti ini ke 5000 ms untuk memenuhi persyaratan waktu tunggu.
asyncallMethods
List
Tidak
Tidak ada
Menentukan daftar metode yang akan dipanggil secara asinkron. Setiap string dalam daftar berada dalam format berikut:
name: nama metode.
type: tipe panggilan asinkron.
listener: pendengar.
Dalam daftar ini, bidang listener berlaku hanya untuk panggilan asinkron tipe callback. Nilai valid dari bidang type:
future: Metode Future digunakan untuk mengambil hasil eksekusi permintaan.
callback: Setelah panggilan layanan jarak jauh selesai, HSF menggunakan respons untuk memanggil balik pendengar yang dikonfigurasi. Pendengar ini harus mengimplementasikan HSFResponseCallback.
proxyStyle
String
Tidak
jdk
Menentukan mode agen layanan. Secara umum, properti ini tidak perlu dikonfigurasi. Untuk memblokir bean konsumen, atur properti ini ke javassist.
Metode Konfigurasi Spring - HSFSpringConsumerBean
Untuk berlangganan layanan, Anda dapat mengonfigurasi bean dari kelas com.taobao.hsf.app.api.util.HSFSpringConsumerBean dalam profil Spring.
Contoh Kode
<bean id="helloWorldService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean"> <! -- [Diperlukan] Tentukan nama operasi untuk langganan layanan. --> <property name="interfaceName" value="com.taobao.hsf.test.HelloWorldService" /> <! -- [Diperlukan] Tentukan nomor versi layanan yang dilanggan. --> <property name="version" value="1.0.0" /> <! -- [Diperlukan] Tentukan grup layanan yang dilanggan. --> <property name="group" value="HSF" /> <! -- [Opsional] Tentukan periode waktu habis untuk permintaan dalam milidetik. Jika konsumen tidak menerima respons dari penyedia, HSFTimeOutException akan dilempar. --> <! -- clientTimeout yang ditentukan untuk konsumen memiliki prioritas lebih tinggi daripada clientTimeout yang ditentukan untuk penyedia. Jika clientTimeout tidak ditentukan untuk konsumen, clientTimeout yang ditentukan untuk penyedia digunakan selama panggilan layanan jarak jauh.--> <property name="clientTimeout" value="3000" /> <! -- [Opsional] Tentukan periode waktu habis untuk beberapa metode dalam layanan. Properti ini memiliki prioritas lebih tinggi daripada clientTimeout untuk konsumen. --> <! -- Tentukan parameter MethodSpecial.methodName sebagai nama metode dan tentukan parameter MethodSpecial.clientTimout sebagai periode waktu habis untuk metode saat ini. --> <property name="methodSpecials"> <list> <bean class="com.taobao.hsf.model.metadata.MethodSpecial"> <property name="methodName" value="sum" /> <property name="clientTimeout" value="2000" /> </bean> </list> </property> <! -- [Opsional] Tentukan waktu (unit: milidetik) untuk tunggu sinkron Config Server mendorong alamat. --> <! -- Ini mencegah HSFAddressNotFoundException terjadi ketika layanan dipanggil sebelum alamat didorong. --> <! -- Kami menyarankan Anda menyetel properti ini ke 5000 ms untuk memenuhi persyaratan waktu tunggu. --> <property name="maxWaitTimeForCsAddress" value="5000"/> <! -- [Opsional] Tentukan daftar metode yang akan dipanggil secara asinkron. Setiap string dalam daftar berada dalam format berikut: --> <! -- name: nama metode. --> <! -- type: tipe panggilan asinkron. --> <! -- listener: pendengar. --> <! -- Bidang listener berlaku hanya untuk panggilan asinkron tipe callback.--> <! -- Nilai valid dari bidang type: --> <! -- future: Metode Future digunakan untuk mengambil hasil eksekusi permintaan. --> <! -- callback: HSF menggunakan respons untuk memanggil balik pendengar yang dikonfigurasi. Pendengar harus mengimplementasikan HSFResponseCallback. --> <property name="asyncallMethods"> <list> <value>name:sayHello;type:callback;listener:com.taobao.hsf.test.service.HelloWorldServiceCallbackHandler</value> </list> </property> <! -- [Opsional] Tentukan mode proxy layanan. Secara umum, properti ini tidak perlu dikonfigurasi. Untuk memblokir bean konsumen, atur properti ini ke javassist. --> <property name="proxyStyle" value="jdk" /> </bean>