二、 API配置
通过API编码方式组装配置、启动Dubbo、发布及订阅服务。此方式可以支持动态创建ReferenceConfig/ServiceConfig,结合泛化调用可以满足API Gateway或测试平台的需要。
1. 服务提供者
通过ServiceConfig 暴露服务接口,发布服务接口到注册中心。
注意:为了更好支持 Dubbo3 应用级服务发现,推荐使用新的DubboBootstrap API。
import org.apache.dubbo.config.ApplicationConfig; import org.apache.dubbo.config.RegistryConfig; import org.apache.dubbo.config.ProviderConfig; import org.apache.dubbo.config.ServiceConfig; import com.xxx.DemoService; import com.xxx.DemoServiceImpl; public class DemoProvider { public static void main(String[] args) { // 服务实现 DemoService demoService = new DemoServiceImpl(); // 当前应用配置 ApplicationConfig application = new ApplicationConfig(); application.setName("demo-provider"); // 连接注册中心配置 RegistryConfig registry = new RegistryConfig(); registry.setAddress("zookeeper://10.20.130.230:2181"); // 服务提供者协议配置 ProtocolConfig protocol = new ProtocolConfig(); protocol.setName("dubbo"); protocol.setPort(12345); protocol.setThreads(200); // 注意:ServiceConfig为重对象,内部封装了与注册中心的连接,以及开启服务端口 // 服务提供者暴露服务配置 ServiceConfig<DemoService> service = new ServiceConfig<DemoService>(); // 此实例很重,封装了与注册中心的连接,请自行缓存,否则可能造成内存和连接泄漏 service.setApplication(application); service.setRegistry(registry); // 多个注册中心可以用setRegistries() service.setProtocol(protocol); // 多个协议可以用setProtocols() service.setInterface(DemoService.class); service.setRef(demoService); service.setVersion("1.0.0"); // 暴露及注册服务 service.export(); // 挂起等待(防止进程退出) System.in.read(); } }
2. 服务消费者
通过ReferenceConfig引用远程服务,从注册中心订阅服务接口。
注:
为了更好支持Dubbo3应用级服务发现,推荐使用新的DubboBootstrap API。
《Apache Dubbo微服务开发从入门到精通》——配置手册——二、 API配置(中): https://developer.aliyun.com/article/1225169