美文网首页
hsf笔记-服务注册和订阅

hsf笔记-服务注册和订阅

作者: 兴浩 | 来源:发表于2018-08-22 14:48 被阅读70次

    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<String> 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<Object> list) {
    
                }
            });
    
            System.in.read();
        }
    

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

    2.Registry

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

    public interface Registry {
        void register(ServiceMetadata var1, List<ServiceURL> 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来注册服务

    2.2 订阅服务

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

    3. RawAddressListener

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

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

    相关文章

      网友评论

          本文标题:hsf笔记-服务注册和订阅

          本文链接:https://www.haomeiwen.com/subject/kqzeiftx.html