blob: a70beb19c4d12a405817821a55255223cf1e2caa [file] [log] [blame]
/*
* Copyright 1999-2011 Alibaba Group.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.dubbo.registry;
import java.util.List;
import com.alibaba.dubbo.common.URL;
/**
* 注册中心服务
*
* 注册中心需处理契约:<br>
* 1. 支持username=foo&password=bar权限认证
* 2. 支持timeout=1000超时设置
* 3. 支持backup=10.20.153.10备选注册中心地址
* 4. 支持file=registry.cache本地磁盘缓存
*
* @author william.liangf
*/
public interface RegistryService {
/**
* 注册服务.
*
* 注册需处理契约:<br>
* 1. 当URL设置了check=false时,注册失败后不报错,在后台定时重试。<br>
* 2. 允许写入route://协议的路由规则,且持久存储路由规则。<br>
* 3. 允许URI相同但参数不同的URL并存,不能覆盖。<br>
* 4. 当服务提供者出现断电等情况异常退出时,需自动删除当前提供者URL。<br>
* 5. 当注册中心重启恢复时,需自动恢复注册数据。<br>
*
* @param url 服务提供者地址,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* @param listener 服务变更事件监听器
*/
void register(URL url, NotifyListener listener);
/**
* 取消注册服务
*
* @param url 服务提供者地址,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* @param listener 服务变更事件监听器
*/
void unregister(URL url, NotifyListener listener);
/**
* 订阅服务
*
* 订阅需处理契约:<br>
* 1. 当URL设置了check=false时,订阅失败后不报错,在后台定时重试<br>
* 2. 当URL设置了register=false时,不记录订阅者的URL<br>
* 3. 当URL设置了admin=true时,结果不只包含服务提供者的URL和路由规则URL,还需包含所有服务订阅者的URL<br>
* 4. 允许以interface,group,version,classifier作为条件查询,如:interface=com.alibaba.foo.BarService&group=foo&version=1.0.0&classifier=william<br>
* 5. 允许星号通配,订阅所有接口的所有分组的所有版本,如:interface=*&group=*&version=*&classifier=* <br>
* 6. 允许URI相同但参数不同的URL并存,不能覆盖。<br>
* 7. 当服务消费者出现断电等情况异常退出时,需自动删除当前消费者URL。<br>
* 8. 当注册中心重启恢复时,需自动恢复订阅请求。<br>
*
* @param url 服务查询键值对,如:subscribe://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* @param listener 服务变更事件监听器
*/
void subscribe(URL url, NotifyListener listener);
/**
* 取消订阅服务
*
* @param url 服务查询键值对,如:subscribe://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* @param listener 服务变更事件监听器
*/
void unsubscribe(URL url, NotifyListener listener);
/**
* 查询服务列表,与订阅服务相同,拉模式,只返回一次结果。
*
* @param url 服务查询键值对,如:subscribe://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* @return 服务列表
*/
List<URL> lookup(URL url);
}