添加dubbo服务调用

This commit is contained in:
tanghc
2019-06-03 18:09:25 +08:00
parent dac8cf257c
commit fc2154567a
11 changed files with 246 additions and 3 deletions

View File

@@ -16,6 +16,7 @@
<properties>
<java.version>1.8</java.version>
<dubbo.version>2.6.5</dubbo.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
@@ -44,6 +45,22 @@
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</dependency>
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>

View File

@@ -42,7 +42,7 @@ public class AlipayBookController {
return story;
}
// 调用story服务
// 通过Feign调用story服务
@ApiMapping(value = "alipay.book.story.get")
public Object getBook2() {
Story story = new Story();

View File

@@ -0,0 +1,49 @@
package com.gitee.sop.bookweb.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.gitee.sop.servercommon.annotation.ApiMapping;
import com.gitee.sop.story.api.param.DemoParam;
import com.gitee.sop.story.api.result.DemoResult;
import com.gitee.sop.story.api.service.DemoService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 调用dubbo服务provider是story见DefaultDemoService.java
* dubbo配置方式参见https://github.com/apache/dubbo-spring-boot-project/blob/0.2.x/README_CN.md
*
* 对比SpringCloud提供的Feigndubbo会方便很多。
*
* Feign的使用方式参见com.gitee.sop.bookweb.controller.AlipayBookController#getBook2()
*/
@RestController
public class DemoConsumerController {
@Reference(version = "${demo.service.version}",
application = "${dubbo.application.id}",
url = "dubbo://localhost:12345")
private DemoService demoService;
// http://localhost:3333/sayHello?name=jim
@RequestMapping("/sayHello")
public String sayHello(@RequestParam String name) {
return demoService.sayHello(name);
}
// http://localhost:3333/dubboStory
@RequestMapping("/dubboStory")
public DemoResult dubboStory() {
DemoParam demoParam = new DemoParam();
demoParam.setId(1);
return demoService.getStory(demoParam);
}
// 作为开放接口
@ApiMapping(value = "dubbo.story.get")
public DemoResult openApi(DemoParam demoParam) {
// 通过dubbo调用story提供的服务
return demoService.getStory(demoParam);
}
}

View File

@@ -15,4 +15,19 @@ eureka:
host: localhost
client:
serviceUrl:
defaultZone: http://${eureka.host}:${eureka.port}/eureka/
defaultZone: http://${eureka.host}:${eureka.port}/eureka/
# dubbo consumer
demo:
service:
version: 1.0.0
dubbo:
application:
id: dubbo-consumer-demo
name: dubbo-consumer-demo
protocol:
id: dubbo
name: dubbo
port: 12345
management:
port: 8081

View File

@@ -0,0 +1,14 @@
package com.gitee.sop.story.api.param;
import lombok.Data;
import java.io.Serializable;
/**
* dubbo 参数
* @author tanghc
*/
@Data
public class DemoParam implements Serializable {
private int id;
}

View File

@@ -0,0 +1,15 @@
package com.gitee.sop.story.api.result;
import lombok.Data;
import java.io.Serializable;
/**
* dubbo返回结果
* @author tanghc
*/
@Data
public class DemoResult implements Serializable {
private int id;
private String name;
}

View File

@@ -0,0 +1,17 @@
package com.gitee.sop.story.api.service;
import com.gitee.sop.story.api.param.DemoParam;
import com.gitee.sop.story.api.result.DemoResult;
public interface DemoService {
String sayHello(String name);
/**
* 获取故事名称
* @param param
* @return
*/
DemoResult getStory(DemoParam param);
}

View File

@@ -16,6 +16,7 @@
<properties>
<java.version>1.8</java.version>
<dubbo.version>2.6.5</dubbo.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
@@ -39,6 +40,23 @@
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</dependency>
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
@@ -84,6 +102,7 @@
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

View File

@@ -0,0 +1,29 @@
package com.gitee.sop.storyweb.service;
import com.alibaba.dubbo.config.annotation.Service;
import com.gitee.sop.story.api.param.DemoParam;
import com.gitee.sop.story.api.result.DemoResult;
import com.gitee.sop.story.api.service.DemoService;
import org.springframework.beans.factory.annotation.Value;
@Service(version = "1.0.0")
public class DefaultDemoService implements DemoService {
/**
* The default value of ${dubbo.application.name} is ${spring.application.name}
*/
@Value("${dubbo.application.name}")
private String serviceName;
public String sayHello(String name) {
return String.format("[%s] : Hello, %s", serviceName, name);
}
@Override
public DemoResult getStory(DemoParam param) {
DemoResult demoResult = new DemoResult();
demoResult.setId(2);
demoResult.setName("dubbo 白雪公主, param=" + param);
return demoResult;
}
}

View File

@@ -16,4 +16,14 @@ eureka:
host: localhost
client:
serviceUrl:
defaultZone: http://${eureka.host}:${eureka.port}/eureka/
defaultZone: http://${eureka.host}:${eureka.port}/eureka/
# dubbo provider
dubbo:
protocol:
name: dubbo
port: 12345
registry:
address: N/A
scan:
base-packages: com.gitee.sop.storyweb.service