mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
添加dubbo服务调用
This commit is contained in:
@@ -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>
|
||||
|
@@ -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();
|
||||
|
@@ -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提供的Feign,dubbo会方便很多。
|
||||
*
|
||||
* 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);
|
||||
}
|
||||
|
||||
}
|
@@ -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
|
@@ -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;
|
||||
}
|
@@ -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;
|
||||
}
|
@@ -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);
|
||||
|
||||
}
|
@@ -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>
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
Reference in New Issue
Block a user