Tüm Ürünler
Search
Belge Merkezi

Enterprise Distributed Application Service:HSF API reference

Son Güncelleme:Oct 03, 2026

HSF, hizmetleri yayınlamak ve bu hizmetlere abone olmak için dört sınıf sunar. Her sınıf Java API veya Spring XML yapılandırması olarak kullanılabilir.

Sınıf Rol Yaklaşım
HSFApiProviderBean Hizmet yayınlama Java API
HSFSpringProviderBean Hizmet yayınlama Spring XML
HSFApiConsumerBean Hizmet aboneliği Java API
HSFSpringConsumerBean Hizmet aboneliği Spring XML

Her Spring sınıfı (HSFSpringXxxBean), karşılık gelen API sınıfındaki (HSFApiXxxBean) ayarlayıcı yöntemlerle aynı yapılandırmayı sunar.

Ön koşullar

Başlamadan önce aşağıdakileri yaptığınızdan emin olun:

  • EDAS SDK'sının Maven bağımlılığı olarak eklenmesi (bkz. Bağımlılığı ekleme)

  • Bir hizmet arayüzü ve bunun uygulama sınıfı

Bağımlılığı ekleme

Aşağıdaki bağımlılığı pom.xml dosyanıza ekleyin:

<dependency>
    <groupId>com.alibaba.edas</groupId>
    <artifactId>edas-sdk</artifactId>
    <version>{version}</version>
</dependency>

{version} ifadesini EDAS SDK sürümünüzle değiştirin.

Hizmet yayınlama (ProviderBean)

Sağlayıcı bean'i, tüketicilerin keşfedip çağırabilmesi için bir hizmet arayüzü uygulamasını HSF kayıt defterine yayınlar.

Önemli

Her HSFApiProviderBean öğesini hizmet başına yalnızca bir kez başlatın. Oluşturma işlemi kaynak yoğun olduğundan nesneyi başlatıldıktan sonra önbelleğe alın.

Java API yaklaşımı

Bir hizmeti programlı olarak yayınlamak için com.taobao.hsf.app.api.util.HSFApiProviderBean kullanın.

// Instantiate and configure a provider bean.
HSFApiProviderBean hsfApiProviderBean = new HSFApiProviderBean();
hsfApiProviderBean.setServiceInterface("com.taobao.hsf.test.HelloWorldService");
hsfApiProviderBean.setTarget(target); // target is the implementation object of the interface specified by serviceInterface.
hsfApiProviderBean.setServiceVersion("1.0.0");
hsfApiProviderBean.setServiceGroup("HSF");

// Initialize the provider bean to publish the service.
hsfApiProviderBean.init();

Spring XML yaklaşımı

Bir hizmeti bildirim temelli olarak yayınlamak için bir Spring yapılandırma dosyasında com.taobao.hsf.app.spring.util.HSFSpringProviderBean kullanın.

<bean id="helloWorldService" class="com.taobao.hsf.test.HelloWorldService" />

<bean class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init">
    <!-- [Required] Service interface -->
    <property name="serviceInterface" value="com.taobao.hsf.test.HelloWorldService" />

    <!-- [Required] Implementation object (Spring bean ID) -->
    <property name="target" ref="helloWorldService" />

    <!-- [Optional] Service version. Default: 1.0.0 -->
    <property name="serviceVersion" value="1.0.0" />

    <!-- [Optional] Service group. Default: HSF -->
    <property name="serviceGroup" value="HSF" />

    <!-- [Optional] Service description -->
    <property name="serviceDesc" value="HelloWorldService providered by HSF" />

    <!-- [Optional] Response timeout in milliseconds. Default: 3000 -->
    <property name="clientTimeout" value="3000"/>

    <!-- [Optional] Per-method timeout. Takes precedence over clientTimeout. -->
    <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>

    <!-- [Optional] Serialization method. Valid values: java, hessian, hessian2, json, kryo. Default: hessian2 -->
    <property name="preferSerializeType" value="hessian2"/>

    <!-- [Optional] Minimum threads in a dedicated thread pool. Default: shared HSF thread pool -->
    <property name="corePoolSize" value="10"/>

    <!-- [Optional] Maximum threads in a dedicated thread pool. Default: shared HSF thread pool -->
    <property name="maxPoolSize" value="60"/>
</bean>

ProviderBean özellikleri

Özellik Tür Zorunlu Varsayılan Açıklama
serviceInterface String Evet Yok HSF hizmetini sağlayan arayüz. Tüketiciler abonelik için bu arayüzü kullanır.
target Object Evet Yok serviceInterface tarafından belirtilen arayüzün uygulama nesnesi.
serviceVersion String Hayır 1.0.0 Hizmet sürümü. Tüketiciler belirli bir sürüme abone olmak için bu değeri kullanır.
serviceGroup String Hayır HSF Hizmet grubu. Tüketiciler belirli bir gruba abone olmak için bu değeri kullanır.
serviceDesc String Hayır Yok Yönetim amaçları için hizmet açıklaması.
clientTimeout int Hayır 3000 Milisaniye cinsinden yanıt zaman aşımı. Sağlayıcı zamanında yanıt vermezse HSFTimeOutException fırlatılır.
methodSpecials MethodSpecial[] Hayır Yok Yöntem bazlı zaman aşımı geçersiz kılmaları. MethodSpecial.methodName değerini yöntem adına ve MethodSpecial.clientTimout değerini milisaniye cinsinden zaman aşımı değerine ayarlayın. clientTimeout önceliğine sahiptir.
preferSerializeType String Hayır hessian2 İstek ve yanıt verileri için seri hale getirme protokolü. Geçerli değerler: java, hessian, hessian2, json, kryo.
corePoolSize String (tamsayı değeri) Hayır 0 Bu hizmet için ayrılmış iş parçacığı havuzundaki minimum iş parçacığı sayısı. Ayarlanmadığında paylaşılan HSF sağlayıcı iş parçacığı havuzu kullanılır.
maxPoolSize String (tamsayı değeri) Hayır 0 Bu hizmet için ayrılmış iş parçacığı havuzundaki maksimum iş parçacığı sayısı. Ayarlanmadığında paylaşılan HSF sağlayıcı iş parçacığı havuzu kullanılır.

Hizmet aboneliği (ConsumerBean)

Tüketici bean'i, yayınlanan bir HSF hizmetine abone olur ve uzak çağrı için bir proxy nesnesi sağlar.

Önemli

Her HSFApiConsumerBean öğesini hizmet başına yalnızca bir kez başlatın. Hem bean nesnesini hem de döndürdüğü proxy'yi önbelleğe alın; bunların oluşturulması kaynak yoğundur.

Uyarı

HSFApiConsumerBean hizmet yapılandırmalarını dahili olarak önbelleğe alır. Aynı hizmeti birden çok kez yapılandırırsanız yalnızca ilk yapılandırma geçerli olur.

Java API yaklaşımı

Bir hizmete programlı olarak abone olmak için com.taobao.hsf.app.api.util.HSFApiConsumerBean kullanın.

// Instantiate and configure a consumer bean.
HSFApiConsumerBean hsfApiConsumerBean = new HSFApiConsumerBean();
hsfApiConsumerBean.setInterfaceName("com.taobao.hsf.test.HelloWorldService");
hsfApiConsumerBean.setVersion("1.0.0");
hsfApiConsumerBean.setGroup("HSF");

// Initialize the consumer bean.
// true = wait synchronously for address push (timeout: 3000 ms).
// false (default) = initialize asynchronously.
hsfApiConsumerBean.init(true);

// Get the HSF proxy object.
HelloWorldService helloWorldService = (HelloWorldService) hsfApiConsumerBean.getObject();

// Call the remote service.
String helloStr = helloWorldService.sayHello("Li Lei");

Spring XML yaklaşımı

Bir hizmete bildirim temelli olarak abone olmak için bir Spring yapılandırma dosyasında com.taobao.hsf.app.spring.util.HSFSpringConsumerBean kullanın.

<bean id="helloWorldService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean">
    <!-- [Required] Service interface name -->
    <property name="interfaceName" value="com.taobao.hsf.test.HelloWorldService" />

    <!-- [Required] Service version -->
    <property name="version" value="1.0.0" />

    <!-- [Required] Service group -->
    <property name="group" value="HSF" />

    <!-- [Optional] Request timeout in milliseconds. Consumer timeout takes precedence over provider timeout. -->
    <property name="clientTimeout" value="3000" />

    <!-- [Optional] Per-method timeout. Takes precedence over clientTimeout. -->
    <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>

    <!-- [Optional] Synchronous wait time (ms) for Config Server to push a service address.
         Prevents HSFAddressNotFoundException when the service is called before the address arrives.
         Recommended: 5000 -->
    <property name="maxWaitTimeForCsAddress" value="5000"/>

    <!-- [Optional] Async call methods. Format: name:<method>;type:<future|callback>;listener:<class>
         The listener field only applies to the callback type and must implement HSFResponseCallback. -->
    <property name="asyncallMethods">
        <list>
            <value>name:sayHello;type:callback;listener:com.taobao.hsf.test.service.HelloWorldServiceCallbackHandler</value>
        </list>
    </property>

    <!-- [Optional] Proxy mode. Default: jdk. Set to javassist to block the consumer bean. -->
    <property name="proxyStyle" value="jdk" />
</bean>

ConsumerBean özellikleri

Özellik Tür Zorunlu Varsayılan Açıklama
interfaceName String Evet Yok Abone olunacak arayüz adı.
version String Evet Yok Hedef hizmetin sürümü.
group String Evet Yok Hedef hizmetin grubu.
clientTimeout int Hayır Yok Milisaniye cinsinden istek zaman aşımı. Yanıt alınamazsa HSFTimeOutException fırlatılır. Tüketici zaman aşımı, sağlayıcı zaman aşımından önceliklidir. Ayarlanmadığında sağlayıcı zaman aşımı uygulanır.
methodSpecials MethodSpecial[] Hayır Yok Yöntem bazlı zaman aşımı geçersiz kılmaları. MethodSpecial.methodName değerini yöntem adına ve MethodSpecial.clientTimout değerini milisaniye cinsinden zaman aşımı değerine ayarlayın. clientTimeout önceliğine sahiptir.
maxWaitTimeForCsAddress int Hayır Yok Config Server'ın bir hizmet adresi göndermesini senkronize olarak beklemek için milisaniye cinsinden süre. Adres gelmeden önce hizmet çağrılırsa HSFAddressNotFoundException oluşmasını engeller. Önerilen değer: 5000.
asyncallMethods List Hayır Yok Eşzamansız olarak çağrılacak yöntemler. Her giriş name:<method>;type:<type>;listener:<class> biçimini kullanır. Geçerli türler: future (sonucu bir Future nesnesiyle alma) ve callback (çağrı tamamlandığında HSF dinleyiciyi çağırır). listener alanı yalnızca callback türü için geçerlidir ve HSFResponseCallback uygulamalıdır.
proxyStyle String Hayır jdk Proxy modu. Tüketici bean'ini engellemek için javassist olarak ayarlayın.

Eşzamansız çağrı kalıpları

HSF, tüketici yöntemleri için asyncallMethods özelliği üzerinden yapılandırılan iki eşzamansız çağrı kalıbını destekler:

Kalıp Çalışma şekli
future Anında döner. Sonucu daha sonra bir Future nesnesiyle alın.
callback Anında döner. Yanıt geldiğinde HSF kayıtlı dinleyiciyi çağırır. Dinleyici HSFResponseCallback uygulamalıdır.