Tous les produits
Search
Centre de documentation

Enterprise Distributed Application Service:HSF API reference

Dernière mise à jour :Aug 10, 2026

HSF propose quatre classes pour publier et s'abonner à des services. Chaque classe est disponible sous forme d'API Java ou de configuration Spring XML.

Classe Rôle Approche
HSFApiProviderBean Publier un service API Java
HSFSpringProviderBean Publier un service Spring XML
HSFApiConsumerBean S'abonner à un service API Java
HSFSpringConsumerBean S'abonner à un service Spring XML

Chaque classe Spring (HSFSpringXxxBean) expose la même configuration que les méthodes setter de sa classe API correspondante (HSFApiXxxBean).

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Ajouté le SDK EDAS en tant que dépendance Maven (consultez la section Ajouter la dépendance)

  • Une interface de service et sa classe d'implémentation

Ajouter la dépendance

Ajoutez la dépendance suivante à votre fichier pom.xml :

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

Remplacez {version} par la version de votre SDK EDAS.

Publier un service (ProviderBean)

Un bean fournisseur publie une implémentation d'interface de service dans le registre HSF afin que les consommateurs puissent la découvrir et l'appeler.

Important

Initialisez chaque HSFApiProviderBean une seule fois par service. Mettez en cache l'objet après l'initialisation, car sa création consomme beaucoup de ressources.

Approche par API Java

Utilisez com.taobao.hsf.app.api.util.HSFApiProviderBean pour publier un service par programmation.

// 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();

Approche par Spring XML

Utilisez com.taobao.hsf.app.spring.util.HSFSpringProviderBean dans un fichier de configuration Spring pour publier un service de manière déclarative.

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

Propriétés de ProviderBean

Propriété Type Obligatoire Par défaut Description
serviceInterface String Oui N/A Interface qui fournit le service HSF. Les consommateurs utilisent cette interface pour s'abonner.
target Object Oui N/A Objet d'implémentation de l'interface spécifiée par serviceInterface.
serviceVersion String Non 1.0.0 Version du service. Les consommateurs utilisent cette valeur pour s'abonner à une version spécifique.
serviceGroup String Non HSF Groupe de service. Les consommateurs utilisent cette valeur pour s'abonner à un groupe spécifique.
serviceDesc String Non N/A Description du service à des fins de gestion.
clientTimeout int Non 3000 Délai d'attente de réponse en millisecondes. Lève une exception HSFTimeOutException si le fournisseur ne répond pas dans les temps.
methodSpecials MethodSpecial[] Non N/A Remplacements de délai d'attente par méthode. Définissez MethodSpecial.methodName sur le nom de la méthode et MethodSpecial.clientTimout sur la valeur du délai d'attente en millisecondes. Cette propriété prévaut sur clientTimeout.
preferSerializeType String Non hessian2 Protocole de sérialisation pour les données de requête et de réponse. Valeurs valides : java, hessian, hessian2, json, kryo.
corePoolSize String (valeur entière) Non 0 Nombre minimal de threads dans un pool de threads dédié pour ce service. Si non défini, le pool de threads partagé du fournisseur HSF est utilisé.
maxPoolSize String (valeur entière) Non 0 Nombre maximal de threads dans un pool de threads dédié pour ce service. Si non défini, le pool de threads partagé du fournisseur HSF est utilisé.

S'abonner à un service (ConsumerBean)

Un bean consommateur s'abonne à un service HSF publié et fournit un objet proxy pour l'invocation distante.

Important

Initialisez chaque HSFApiConsumerBean une seule fois par service. Mettez en cache à la fois l'objet bean et le proxy qu'il renvoie, car leur création consomme beaucoup de ressources.

Avertissement

HSFApiConsumerBean met en cache les configurations de service en interne. Si vous configurez plusieurs fois le même service, seule la première configuration prend effet.

Approche par API Java

Utilisez com.taobao.hsf.app.api.util.HSFApiConsumerBean pour vous abonner à un service par programmation.

// 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");

Approche par Spring XML

Utilisez com.taobao.hsf.app.spring.util.HSFSpringConsumerBean dans un fichier de configuration Spring pour vous abonner à un service de manière déclarative.

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

Propriétés de ConsumerBean

Propriété Type Obligatoire Par défaut Description
interfaceName String Oui N/A Nom de l'interface à laquelle s'abonner.
version String Oui N/A Version du service cible.
group String Oui N/A Groupe du service cible.
clientTimeout int Non N/A Délai d'attente de requête en millisecondes. Lève une exception HSFTimeOutException si aucune réponse n'est reçue. Le délai d'attente du consommateur prévaut sur celui du fournisseur. Si non défini, le délai d'attente du fournisseur s'applique.
methodSpecials MethodSpecial[] Non N/A Remplacements de délai d'attente par méthode. Définissez MethodSpecial.methodName sur le nom de la méthode et MethodSpecial.clientTimout sur la valeur du délai d'attente en millisecondes. Cette propriété prévaut sur clientTimeout.
maxWaitTimeForCsAddress int Non N/A Temps d'attente synchrone en millisecondes pour que Config Server pousse une adresse de service. Empêche l'exception HSFAddressNotFoundException lorsque le service est appelé avant l'arrivée de l'adresse. Recommandé : 5000.
asyncallMethods List Non N/A Méthodes à appeler de manière asynchrone. Chaque entrée utilise le format name:<method>;type:<type>;listener:<class>. Types valides : future (récupération du résultat avec un objet Future) et callback (HSF invoque l'écouteur une fois l'appel terminé). Le champ listener s'applique uniquement au type callback et doit implémenter HSFResponseCallback.
proxyStyle String Non jdk Mode proxy. Définissez sur javassist pour bloquer le bean consommateur.

Modèles d'appels asynchrones

HSF prend en charge deux modèles d'appels asynchrones pour les méthodes consommatrices, configurés via la propriété asyncallMethods :

Modèle Fonctionnement
future Retour immédiat. Récupérez le résultat ultérieurement avec un objet Future.
callback Retour immédiat. HSF invoque l'écouteur enregistré lorsque la réponse arrive. L'écouteur doit implémenter HSFResponseCallback.