Java基於Dapr的服務調用

在進行該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.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;

@RestController
public class ServerController {
    @PostMapping("/hello")
    public Map<String,Object> sayHello(@RequestBody Map<String,Object> params){
        String name = params.get("name").toString();
        String msg =  "Hello " + name;
        Map<String,Object> response = new HashMap<>();
        response.put("code",200);
        response.put("status",true);
        response.put("data",msg);
        return response;
    }
}
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;
import java.util.HashMap;
import java.util.Map;

@RestController
public class ClientController {
    @Resource
    private DaprClient client;
    private static final String SERVICE_APP_ID = "server_demo";
    private static final String METHOD_NAME = "hello";

    @GetMapping("/say")
    public String say() {
        Map<String,Object> params = new HashMap<>();
        params.put("name","fanqi");
        HashMap response = client.invokeMethod(
                SERVICE_APP_ID,
                METHOD_NAME,
                params,
                HttpExtension.POST,
                HashMap.class).block();
        return response.get("data").toString();
    }
}
5.application.properties配置服務端的運行端口
server.port=8888
6.配置注入Dapr邊車的調試模式【略】
7.運行測試【略】

調用

1.使用Dapr Dashboard查看服務註冊狀態

image

2.訪問http://localhost:8888/say
3.查看鏈路追蹤詳情

image

Dapr在Kubernetes下,名稱解析組件使用 Kubernetes DNS 服務來解析在集羣中運行的其他應用程序的位置。 對於本地和多個物理機器,這將使用 mDNS 協議。同時也可以使用其他的服務註冊中間件,例如Concul,具體信息請參考官網介紹:
https://docs.dapr.io/zh-hans/reference/components-reference/supported-name-resolution/setup-nr-consul/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章