com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery2.2.4.RELEASE org.apache.dubbo dubbo-spring-boot-starter2.7.8
yml:
server: port: 9999 spring: application: name: dtest cloud: nacos: discovery: server-addr: localhost:8848 #dubbo 服务者配置 dubbo: application: #应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。 name: Provide registry: #注册中心配置,用于配置连接注册中心相关信息。 address: nacos://127.0.0.1:8848 protocol: #协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。 name: dubbo port: 20880 scan: base-packages: com.example.dtest.dubboProvide.service #服务暴露与发现消费所在的package
最后配置的扫描的dubbo服务包
dubbo服务接口:注意这里的@service是dubbo的,后面才能注入到其他服务中
package com.example.dtest.dubboProvide.service.imp; import com.alibaba.dubbo.config.annotation.Service; import com.example.service.DemoService; @Service(version = "1.0.0") @org.springframework.stereotype.Service public class DemoServerImpl implements DemoService { @Override public String sayHello(String s) { System.out.println("远程调用该服务方!"); return "你好"+s+"!"; } }
客户端(调用的/消费端):
pom:
```powershell4.0.0 org.springframework.boot spring-boot-starter-parent2.2.2.RELEASE com.example demo0.0.1-SNAPSHOT demo Demo project for Spring Boot 1.8 com.example dtestcommon0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starterorg.springframework.boot spring-boot-starter-testtest org.springframework.boot spring-boot-starter-webfluxorg.springframework.cloud spring-cloud-starter-gateway2.2.1.RELEASE com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery2.2.4.RELEASE org.apache.commons commons-lang33.12.0 org.apache.dubbo dubbo-spring-boot-starter2.7.8 org.springframework.boot spring-boot-maven-plugin
yml: ```powershell server: port: 8889 spring: cloud: gateway: routes: - id: path_route uri: lb://dtest #配置的实际想访问的动态地址(nacos注册的) predicates: #断言,路径相匹配的进行路由 # - Path=/myWebsocket/000 #路径符合条件的(断言这个路径要是实际路由有的那个地址,要是真实访问地址服务器里面有的地址) - Path=/myWebsocket/** #路径符合条件的(断言这个路径要是实际路由有的那个地址,要是真实访问地址服务器里面有的地址) nacos: discovery: server-addr: localhost:8848 application: name: demogateway dubbo: application: #应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。 name: Consumer registry: #注册中心配置,用于配置连接注册中心相关信息。 address: nacos://127.0.0.1:8848 protocol: #协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。 name: dubbo port: 20880 scan: base-packages: com.example.dtestgateway.dubboConsumer.service #服务暴露与发现消费所在的package
消费的dubbo接口类:
package com.example.dtestgateway.dubboConsumer.service.imp; import com.example.service.DemoService; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service; @Service public class DubboTestService { @DubboReference(version = "1.0.0") public DemoService demoService; public String Echo(String s){ String ret_msg; try { ret_msg = demoService.sayHello(s); }catch (Exception e){ e.printStackTrace(); ret_msg = "出错啦!"; } return ret_msg; } }
注意:这里的@DubboReference也是dubbo的,才能注入
controller:
package com.example.dtestgateway.controller; import com.example.dtestcommon.vo.Res; import com.example.dtestgateway.dubboConsumer.service.imp.DubboTestService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/dubbo") public class DubboTestController { @Autowired DubboTestService dubboTestService; @GetMapping("/pushString") public Res Hello(@RequestParam("name") String name){ String str = dubboTestService.Echo(name); return Res.success(str); } }
公共服务,调用包:服务端是集成的这个公共接口,然后服务端调用注入的也是这个公共接口,他在仅仅作用于调用的公共服务里
package com.example.service; public interface DemoService { String sayHello(String s); }测试:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)