dubbo 服务调用示例
服务端
application.yml
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848
dubbo:
#registry:
# address: spring-cloud://localhost:8848
protocol:
name: dubbo
port: 20880
HelloService
@DubboService
public class HelloServiceImpl implements HelloService {
@Override
public String hello() {
return "hello";
}
}
NacosDiscoveryConfiguration(cloud alibaba toolkit自动添加的类)
@EnableDiscoveryClient //开启服务发现客户端
@Configuration
public class NacosDiscoveryConfiguration {
}
DemoApplication
@EnableDubbo //开启dubbo
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
消费端
application.yml
spring:
application:
name: nacos-consuemr
cloud:
nacos:
discovery:
server-addr: localhost:8848
dubbo:
protocol:
name: dubbo
port: 20881
server:
port: 8081
HelloService
public interface HelloService {
String hello();
}
NacosDiscoveryConfiguration
@EnableDiscoveryClient //开启服务发现客户端
@Configuration
public class NacosDiscoveryConfiguration {
}
HelloController
@RestController
public class HelloController {
@DubboReference
private HelloService helloService;
@RequestMapping("/hello")
public String hello(){
System.out.println(helloService.hello());
return "success";
}
}
DemoApplication
@EnableDubbo //开启dubbo
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
使用测试
http://localhost:8848/nacos,查看注册的服务:
localhost:8081/hello,控制台输出:
2022-03-17 20:26:41.197 INFO 894 --- [ main] o.a.d.config.bootstrap.DubboBootstrap : [DUBBO] DubboBootstrap has started., dubbo version: 2.7.8, current host: 192.168.5.10
2022-03-17 20:26:41.200 INFO 894 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 4.084 seconds (JVM running for 4.688)
2022-03-17 20:26:42.092 WARN 894 --- [client.listener] a.c.d.m.r.DubboServiceMetadataRepository : Current application will subscribe all services(size:2) in registry, a lot of memory and CPU cycles may be used, thus it's strongly recommend you using the externalized property 'dubbo.cloud.subscribed-services' to specify the services
2022-03-17 20:28:19.180 INFO 894 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-03-17 20:28:19.180 INFO 894 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-03-17 20:28:19.197 INFO 894 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 17 ms
hello
消费端可以整成调用远程服务