写入测试代码如下:
public class Test {
public static void main(String[] args) {
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://121.xxx.xx.xxx:2181"));
//registry.unregister(URL.valueOf("condition://0.0.0.0/com.hebao.bixia.learn.service.DubboStopTestService?category=routers&dynamic=false&rule=" + URL.encode(" => host != 120.24.98.98") ));
registry.register(URL.valueOf("override://120.xxx.xx.xxx/com.debdo.bixc.learn.service.DubboStopTestService?category=providers&dynamic=false&disbaled=true" ));
}
}
服务端代码简单打印如下:
public class DubboStopTestServiceImpl implements DubboStopTestService {
public void testStop() {
System.out.println("test------------------------");
}
}
在两台服务器上120,121上分别跑该服务,客户端模拟调用代码如下:
public class DubboStopTestServiceTest extends TestSuper{
@Autowired
private DubboStopTestService dubboStopTestService;
@Test
public void test() {
while(true) {
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
dubboStopTestService.testStop();
}
}
}
现在我写入上面的覆盖规则是想让120机器不在接收客户端的请求,而写入规则并没有生效,
120的服务器还是能持续接收请求,打印出test. 求懂的人帮忙解答。
应该是:
override://120.xxx.xx.xxx/com.debdo.bixc.learn.service.DubboStopTestService?category=configurators&dynamic=false&disbaled=true
override://120.xxx.xx.xxx/com.debdo.bixc.learn.service.DubboStopTestService?category=configurators&dynamic=false&disbaled=true
配置成这个,120的这台机器上的节点,仍然会接收到客户端的请求,没有被禁用掉。
禁用后,可用的provider节点要有1个以上。否则dubbo出于保护机制,如果配置规则导致可用provider列表为空,配置不生效
有的,我是在服务的节点有两个,120,121的,我现在禁用120的这台无效,120,121还是都能收到请求。
Most helpful comment
禁用后,可用的provider节点要有1个以上。否则dubbo出于保护机制,如果配置规则导致可用provider列表为空,配置不生效