https://mp.weixin.qq.com/s?__biz=MjM5MTc4MDM1MQ==&mid=2651736335&idx=1&sn=aa3014ca63e2f757d8eee70d70ca646a&chksm=bd4ab59f8a3d3c89e4e0a00e62d114b035a4371fbea32752b1d8cf025e485669cb48bacb5f1a&mpshare=1&scene=23&srcid=0111OjASko4RuJt89yBosSN9&sharer_sharetime=1641864503101&sharer_shareid=3fbf667202e3571656770d85ec2d851f#rd

环境

OS:Microsoft Windows [版本 10.0.17763.1879]

Docker Desktop for Windows

dapr CLI version: 1.2.0

dapr Runtime version: 1.2.0

IDE: IntelliJ IDEA 2019.1.4

1、安装Docker Desktop for Windows

安装过程略,点击此处官方教程供参考:https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon

2、下载Dapr cli,初始化dapr运行时环境

初始化使用dapr init 命令,过程略,点击此处参考官方教程 :https://docs.dapr.io/zh-hans/getting-started/install-dapr-cli/ 或 这篇文章:https://blog.csdn.net/ChaITSimpleLove/article/details/114379578

有个留意点:dapr init执行初始化后 dapr cli会从github下载2个文件包到本地~/.dapr/bin/目录

一个是dashboard,一个是daprd;同时会从dockerhub下载3个dapr组件docker镜像。daprd和dashboard文件较大,github访问的网络问题不能忽视。往往是docker镜像早已就绪,daprd和dashboard却迟迟下载不完或悄悄地下载失败了,必要情况下请科学上网

3、下载java-sdk

java-sdk中包含有examples模块,可以通过sdk调用示例熟悉dapr开发模式,测试开发环境搭建是否成功。

需要注意的是,官方的java-sdk所需运行环境是JDK8,但examples是JDK11。代码下载地址:https://github.com/dapr/java-sdk.git

4、打包测试dapr run命令

在io.dapr.examples.invoke.http目录下有3个http服务调用测试类,操作相关的说明文档见io/dapr/examples/invoke/http/README.md,我们先按照说明文档的操作操作一遍,熟悉下dapr run命令。

以下步骤通过cmd命令行操作:

先在dapr-sdk-parent下maven打包整个项目,在java-sdk-master\examples\target下会生成打包文件dapr-java-sdk-examples-exec.jar 。参考命令:mvn clean install

cd 到java-sdk-master\examples目录下执行启动服务端命令:

dapr run –app-id invokedemo –app-port 3000 – java -jar target/dapr-java-sdk-examples-exec.jar io.dapr.examples.invoke.http.DemoService -p 3000

1

新开一个cmd命令窗口,再执行启动客户端命令直接调用服务端并发送信息:

dapr run –app-id invokeclient – java -jar target/dapr-java-sdk-examples-exec.jar io.dapr.examples.invoke.http.InvokeClient “message one” “message two”

1

如果客户端输出以下信息,表明服务调用成功

== APP == “message one” received

== APP == “message two” received

== APP == Done

5、使用IDEA配置daprd调试代码

第4步是打包应用后通过dapr run命令启动服务调用,以下介绍通过idea编辑器调试dapr远程服务调用方法。点击此处查看官方教程

官方教程已经很详细,此处做个贴图补充说明

daprd是dapr的运行时环境,sidecar模式要求一个Java应用服务需要启动一个daprd.exe进程和一个java应用进程,所以在开发模式下我们需要挨个启动这2个进程。启动前先分别配置idea启动参数

1)daprd.exe启动配置

File->Settings->Tools->External Tools 点击+号新增一个tool配置项:

Name 随意填,如daprd for DemoService in examples

Group:默认选择External Tools

Program:选择daprd.exe路径 C:\dapr\daprd.exe (从~/.dapr/bin目录下复制一个daprd.exe到C:\dapr\目录下。.dapr为隐藏目录,其下的文件idea目录查看器看不到)

Arguments:配置 -app-id invokedemo -app-port 3000,申明服务的app-id和端口,其它配置请参考 daprd –help

Working directory:配置程序所在目录,如:C:\workspace\test\java-sdk-master\examples

图片

配置完成后会在~.IntelliJIdea2019.1\config\tools目录下生成External Tools.xml文件,文件内容如下

<exec>

  <option name="COMMAND" value="C:\dapr\daprd.exe" />

  <option name="PARAMETERS" value="-app-id invokedemo -app-port 3000" />

  <option name="WORKING_DIRECTORY" value="C:/workspace/test/java-sdk-master/examples" />

</exec>

同时会在Tools->External Tools菜单下多出一个tool项daprd for DemoService in examples(如下图),点击daprd for DemoService in examples 可以启动daprd.exe进程,监控3000端口

图片

2)DemoService启动配置

Run->Edit Configurations,配置main启动项,比普通的main方法启动多配置一项

Program arguments:-p 3000,启动端口指定为3000,必须和上一步中的daprd指定的监听端口一致

图片

配置完成后debug模式启动DemoService服务

图片

至此服务端启动完成在

io.dapr.examples.invoke.http.DemoServiceController#handleMethod方法内加断点,执行第4步中的dapr run –app-id invokeclient – java -jar target/dapr-java-sdk-examples-exec.jar io.dapr.examples.invoke.http.InvokeClient “message one” “message two” 启动客户端服务调用服务端即可调试服务端代码。

正如官方文档所言,通过daprd启动的服务,dapr list命令和dapr dashboard是看不到的

旁门左道:

dapr run 命令只支持自托管方式使用(见:https://docs.dapr.io/zh-hans/reference/cli/dapr-run/),同一个app-id限制只能启动一个应用实例(多实例启动会报错dapr with ID invokedemo is already running)。如果我们想在本地启动2个实例可以尝试用dapr和daprd分别启动1个app-id一样但端口不一样的实例(用第4步和第5步的方式分别启动一个服务端)。用第4步的客户端服务多次调用可以发现dapr会随机访问1个后台服务,Dapr自托管方式使用 mDNS 协议提供轮询负载均衡服务1。

参考文档:

https://docs.dapr.io/zh-hans/

https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon

https://github.com/RicardoNiepel/dapr-docs/tree/master/howto/intellij-debugging-daprd

文档更新时间: 2022-01-11 09:55   作者:admin