All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.dubbo.registry.RegistryService Maven / Gradle / Ivy

There is a newer version: 3.3.0-beta.3
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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 org.apache.dubbo.registry;

import org.apache.dubbo.common.URL;

import java.util.List;

/**
 * RegistryService. (SPI, Prototype, ThreadSafe)
 *
 * @see org.apache.dubbo.registry.Registry
 * @see org.apache.dubbo.registry.RegistryFactory#getRegistry(URL)
 */
public interface RegistryService {

    /**
     * Register data, such as : provider service, consumer address, route rule, override rule and other data.
     * 

* Registering is required to support the contract:
* 1. When the URL sets the check=false parameter. When the registration fails, the exception is not thrown and retried in the background. Otherwise, the exception will be thrown.
* 2. When URL sets the dynamic=false parameter, it needs to be stored persistently, otherwise, it should be deleted automatically when the registrant has an abnormal exit.
* 3. When the URL sets category=routers, it means classified storage, the default category is providers, and the data can be notified by the classified section.
* 4. When the registry is restarted, network jitter, data can not be lost, including automatically deleting data from the broken line.
* 5. Allow URLs which have the same URL but different parameters to coexist,they can't cover each other.
* * @param url Registration information , is not allowed to be empty, e.g: dubbo://10.20.153.10/org.apache.dubbo.foo.BarService?version=1.0.0&application=kylin */ void register(URL url); /** * Unregister *

* Unregistering is required to support the contract:
* 1. If it is the persistent stored data of dynamic=false, the registration data can not be found, then the IllegalStateException is thrown, otherwise it is ignored.
* 2. Unregister according to the full url match.
* * @param url Registration information , is not allowed to be empty, e.g: dubbo://10.20.153.10/org.apache.dubbo.foo.BarService?version=1.0.0&application=kylin */ void unregister(URL url); /** * Subscribe to eligible registered data and automatically push when the registered data is changed. *

* Subscribing need to support contracts:
* 1. When the URL sets the check=false parameter. When the registration fails, the exception is not thrown and retried in the background.
* 2. When URL sets category=routers, it only notifies the specified classification data. Multiple classifications are separated by commas, and allows asterisk to match, which indicates that all categorical data are subscribed.
* 3. Allow interface, group, version, and classifier as a conditional query, e.g.: interface=org.apache.dubbo.foo.BarService&version=1.0.0
* 4. And the query conditions allow the asterisk to be matched, subscribe to all versions of all the packets of all interfaces, e.g. :interface=*&group=*&version=*&classifier=*
* 5. When the registry is restarted and network jitter, it is necessary to automatically restore the subscription request.
* 6. Allow URLs which have the same URL but different parameters to coexist,they can't cover each other.
* 7. The subscription process must be blocked, when the first notice is finished and then returned.
* * @param url Subscription condition, not allowed to be empty, e.g. consumer://10.20.153.10/org.apache.dubbo.foo.BarService?version=1.0.0&application=kylin * @param listener A listener of the change event, not allowed to be empty */ void subscribe(URL url, NotifyListener listener); /** * Unsubscribe *

* Unsubscribing is required to support the contract:
* 1. If don't subscribe, ignore it directly.
* 2. Unsubscribe by full URL match.
* * @param url Subscription condition, not allowed to be empty, e.g. consumer://10.20.153.10/org.apache.dubbo.foo.BarService?version=1.0.0&application=kylin * @param listener A listener of the change event, not allowed to be empty */ void unsubscribe(URL url, NotifyListener listener); /** * Query the registered data that matches the conditions. Corresponding to the push mode of the subscription, this is the pull mode and returns only one result. * * @param url Query condition, is not allowed to be empty, e.g. consumer://10.20.153.10/org.apache.dubbo.foo.BarService?version=1.0.0&application=kylin * @return The registered information list, which may be empty, the meaning is the same as the parameters of {@link org.apache.dubbo.registry.NotifyListener#notify(List)}. * @see org.apache.dubbo.registry.NotifyListener#notify(List) */ List lookup(URL url); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy