hsf笔记-服务注册和订阅

1.使用configClient进行服务注册和订阅

1.1 注册

    @Test
    public void test1() throws IOException {
        PublisherRegistration registration = new PublisherRegistration(
"HSFProvider-com.alibaba.edas.carshop.itemcenter.ItemService:1.0.0", 
"com.alibaba.edas.carshop.itemcenter.ItemService:1.0.0", "ecu:10.0.1.44");
        registration.setGroup("HSF");

        Publisher publisher = PublisherRegistrar.register(registration);
        publisher.publish("10.0.1.44:12200?_p=hessian2&APP=unknown&
_ENV=DEFAULT&v=2.0&_TIMEOUT=3000&_ih2=y&mg=testGroup&_SERIALIZETYPE=hessian&_auth=y");
        System.in.read();
    }

1.2 订阅

    @Test
    public void test2() throws IOException {
        SubscriberRegistration cs_registration = new SubscriberRegistration(
"HSFSubscriber-com.alibaba.edas.carshop.itemcenter.ItemService:1.0.0",
 "com.alibaba.edas.carshop.itemcenter.ItemService:1.0.0", "ecu:10.0.1.44");
        cs_registration.setGroup("HSF");
        Subscriber subscriber = SubscriberRegistrar.register(cs_registration);
        subscriber.setDataObserver(new SubscriberDataObserver() {
            public void handleData(String s, List list) {

            }
        });

        System.in.read();
    }

两者编程模型是比较一致的

2.Registry

hsf中的Registry接口定义了服务注册和订阅方法,MTConfigServerRegistry是对Registry接口的实现,其内部使用了上面configClient相关方法

public interface Registry {
    void register(ServiceMetadata var1, List var2);

    void unregister(ServiceMetadata var1);

    void subscribe(Protocol var1, ServiceMetadata var2, RawAddressListener var3);

    void unsubscribe(Protocol var1, ServiceMetadata var2, RawAddressListener var3);
}

public class MTConfigServerRegistry implements Registry, ApplicationModelAware {
}

2.1 注册服务

可以看一下下面堆栈,当调用ServiceMetadata的export方法时,内部会调用Protocol接口链的export方法,再由RegistryProtocolInterceptor调用MTConfigServerRegistry的register来注册服务

hsf笔记-服务注册和订阅_第1张图片

2.2 订阅服务

同理,当调用ServiceMetadata的refer方法时,内部会调用MTConfigServerRegistry的subscribe方法来订阅服务

hsf笔记-服务注册和订阅_第2张图片

3. RawAddressListener

public interface RawAddressListener {
    void notify(Registry var1, Protocol var2, ServiceMetadata var3, List var4);
}

当订阅服务收到消息时,会调用RawAddressListener的notify方法

hsf笔记-服务注册和订阅_第3张图片

你可能感兴趣的:(hsf笔记-服务注册和订阅)