2019-04-10 | Dubbo | UNLOCK

Dubbo服务分组-案例

Dubbo分组

当一个接口有多种实现时,可以用 group 区分。

应用场景

区分不同开发环境 || 蓝绿发布

在provider 服务提供者
我有一个接口,但是有两个实现类,并且都把服务暴露出去了。
123

然后在 consumer 服务消费者 我直接注入了这个服务,那么我会调用到那个实现类呢?
234

这个看到它调用到了服务B 但其实它是随机的,多长时间启动几次服务就会发现它的随机特性,那么我们怎么,让它固定访问服务A呢?,这里就需要用到 Dubbo分组了
345
在provider 服务提供者的 实现类上分别加上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.dubbo.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.dubbo.service.IHelloService;
import org.springframework.stereotype.Component;

@Service(interfaceClass = IHelloService.class,group = "A")
@Component
public class HelloServiceImplA implements IHelloService{
@Override
public String sendMessage(String message){
System.out.println("messageA="+message);
return "quickstart-provider-message="+message;
}

@Override
public String sendMessage2(String message){
System.out.println("message02="+message);

try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}

return "quickstart-provider-message02 ="+message;
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.dubbo.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.dubbo.service.IHelloService;
import org.springframework.stereotype.Component;

@Service(interfaceClass = IHelloService.class,group = "B")
@Component
public class HelloServiceImplB implements IHelloService{
@Override
public String sendMessage(String message){
System.out.println("messageB="+message);
return "quickstart-provider-message="+message;
}

@Override
public String sendMessage2(String message){
System.out.println("message02="+message);

try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}

return "quickstart-provider-message02 ="+message;
}
}

服务消费者不做改变,发现启动出错,这是因为 provider 的服务分组后,consumer还在查询默认不分组的 service,那么怎么解决呢? 我们来指定 consumer 调用的服务
456
567

评论加载中