事件处理线程说明
配置如:
<dubbo:protocolname="dubbo"dispatcher="all"threadpool="fixed"threads="100"/>
在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,
点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,
A接口配置点对点,不影响B接口从注册中心获取列表。

(1) 如果是线上需求需要点对点,可在<dubbo:reference>中配置url指向提供者,将绕过注册中心,多个地址用分号隔开,配置如下:(1.0.6及以上版本支持)
<dubbo:reference id="xxxService"interface="com.alibaba.xxx.XxxService"url="dubbo://localhost:20890"/>
(2) 在JVM启动参数中加入-D参数映射服务地址(只应在测试阶段使用,请不要在线上这样使用),如:
(key为服务名,value为服务提供者url,此配置优先级最高,1.0.15及以上版本支持)
java -Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890
(3) 如果服务比较多,也可以用文件映射(只应在测试阶段使用,请不要在线上这样使用),如:
(用-Ddubbo.resolve.file指定映射文件路径,此配置优先级高于<dubbo:reference>中的配置,1.0.15及以上版本支持)
(2.0以上版本自动加载${user.home}/dubbo-resolve.properties文件,不需要配置)
java -Ddubbo.resolve.file=xxx.properties
然后在映射文件xxx.properties中加入:
(key为服务名,value为服务提供者url)
com.alibaba.xxx.XxxService=dubbo://localhost:20890
问题
为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如果一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行。
解决方案
可以让服务提供者开发方,只订阅服务(开发的服务可能依赖其它服务),而不注册正在开发的服务,通过直连测试正在开发的服务。

禁用注册配置:
<dubbo:registryaddress="10.20.153.10:9090"register="false"/>
或者:
<dubbo:registryaddress="10.20.153.10:9090?register=false"/>
问题
如果有两个镜像环境,两个注册中心,有一个服务只在其中一个注册中心有部署,另一个注册中心还没来得及部署,而两个注册中心的其它应用都需要依赖此服务,所以需要将服务同时注册到两个注册中心,但却不能让此服务同时依赖两个注册中心的其它服务。
解决方案
可以让服务提供者方,只注册服务到另一注册中心,而不从另一注册中心订阅服务。
禁用订阅配置:
<dubbo:registryid="hzRegistry"address="10.20.153.10:9090"/>
<dubbo:registryid="qdRegistry"address="10.20.141.150:9090"subscribe="false"/>
或者:
<dubbo:registryid="hzRegistry"address="10.20.153.10:9090"/>
<dubbo:registryid="qdRegistry"address="10.20.141.150:9090?subscribe=false"/>
有时候希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式。
<dubbo:registryaddress="10.20.141.150:9090"dynamic="false"/>
或者:
<dubbo:registryaddress="10.20.141.150:9090?dynamic=false"/>
服务提供者初次注册时为禁用状态,需人工启用,断线时,将不会被自动删除,需人工禁用。
如果是一个第三方独立提供者,比如memcached等,可以直接向注册中心写入提供者地址信息,消费者正常使用:
(通常由脚本监控中心页面等调用)
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));
registry.register(URL.valueOf("memcached://10.20.153.11/com.foo.BarService?category=providers&dynamic=false&application=foo"));
原文:https://www.cnblogs.com/tiancai/p/9599252.html