Java基于Dapr的服务调用

发布时间 2023-06-09 14:36:14作者: SpringCore

在进行该Demo程序前,应保证本地环境Dapr已正确安装

Server端

1.创建SpringBoot应用【略】
2.POM引入Dapr
        <!-- https://mvnrepository.com/artifact/io.dapr/dapr-sdk-springboot -->
        <dependency>
            <groupId>io.dapr</groupId>
            <artifactId>dapr-sdk-springboot</artifactId>
            <version>1.8.0</version>
        </dependency>
3.编写一个简单的控制器,返回简单的内容消息
package cn.coreqi.server_demo.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/server")
public class ServerController {
    @PostMapping("/hello")
    public String sayHello(@RequestParam String name){
        return "Hello " + name;
    }
}

4.application.properties配置服务端的运行端口
server.port=7777
5.配置注入Dapr边车的调试模式
1.新建Shell Script配置

image

2.修改名称,指定工作目录,在脚本执行前添加Maven构建

image

image

-DskipTests=true package
3.添加shell脚本,保存
dapr run --app-id server_demo --app-port 7777 --dapr-http-port 7001 -- java -jar target/server_demo-0.0.1-SNAPSHOT.jar

image

6.运行测试

image

Client端

1.创建SpringBoot应用【略】
2.POM引入Dapr
        <!-- https://mvnrepository.com/artifact/io.dapr/dapr-sdk-springboot -->
        <dependency>
            <groupId>io.dapr</groupId>
            <artifactId>dapr-sdk-springboot</artifactId>
            <version>1.8.0</version>
        </dependency>
3.配置Dapr
package cn.coreqi.client_demo.config;

import io.dapr.client.DaprClient;
import io.dapr.client.DaprClientBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DaprConfig {
    private static final DaprClientBuilder BUILDER = new DaprClientBuilder();

    @Bean
    public DaprClient buildDaprClient() {
        return BUILDER.build();
    }
}
4.新建控制器并调用服务端的接口
package cn.coreqi.client_demo.controller;

import io.dapr.client.DaprClient;
import io.dapr.client.domain.HttpExtension;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
public class ClientController {
    @Resource
    private DaprClient client;

    private static final String SERVICE_APP_ID = "server_demo";
    private static final String METHOD_NAME = "server/hello";

    @GetMapping("/say")
    public String say() {
        String response = client.invokeMethod(
                SERVICE_APP_ID,
                METHOD_NAME,
                "coreqi",
                HttpExtension.POST,
                String.class).block();
        return response;
    }
}
5.application.properties配置服务端的运行端口
server.port=8888
6.配置注入Dapr边车的调试模式【略】
7.运行测试【略】