以 Dapr Java SDK demo 为例。
编译 jar 包
cd $JAVA_SDK_DIRECTORY
mvn package
⚠️编译过程会从外网拉去二进制文件,随时都可能需要梯子
命令行启动 DemoService
然后通过命令行启动 demoservice:
dapr run --app-id invokedemo --app-port 3000 --port 3005 -- java -jar examples/target/dapr-java-sdk-examples-exec.jar io.dapr.examples.invoke.http.DemoService -p 3000
通过 ps aux | grep daprd
可以发现 dapr run
的时候,会启动一个 daprd
后台进程,进程如下:
daprd --app-id invokedemo --dapr-http-port 3005 --dapr-grpc-port 51793 --log-level info --max-concurrency -1 --protocol http --metrics-port 51794 --app-port 3000 --placement-address localhost:50005
daprd
进程注册了 app
端口 3000
,以及 dapr
的通讯端口,http=3005, grpc=51793
。
IDE debug InvokeClient
在 IDE 里面,调试 sdk
自带的 invokeclient
,编辑配置设定环境变量 DAPR_HTTP_PORT=3005;DAPR_GRPC_PORT=51793
来指定 dapr
的 http
和 grpc
通讯端口即可:
还未深入了解源代码,猜测 java sdk
会有一个确定 dapr runtime
通信端口的流程,其中 DAPR_HTTP_PORT DAPR_GRPC_PORT
两个环境变量会被用到。
IDE 调试 DemoService
启动 daprd
首先命令行启动 daprd
预先注册 DemoService
的 app
端口:
daprd -app-id invokedemo -app-port 3000 -dapr-http-port 3005 -dapr-grpc-port 52000 -placement-address localhost:50005
IDE 运行 InvokeClient
编辑 configuration
设置 dapr runtime
的通信端口,添加环境变量:DAPR_HTTP_PORT=3005;DAPR_GRPC_PORT=52000
,注意环境变量的值需要和 daprd
启动 invokedemo
指定的 -dapr-http-port
和 -dapr-grpc-port
保持一致,否则 InvokeClient
启动时会报连接不上的错误。
命令行运行 InvokeClient
cd $JAVA_SDK_DIRECTORY
mvn package
DAPR_HTTP_PORT=3005;DAPR_GRPC_PORT=52000 java -jar examples/target/dapr-java-sdk-examples-exec.jar io.dapr.examples.invoke.http.InvokeClient 'message one' 'message two'
得到如下输出:
2020-06-01 16:41:40.437
2020-06-01 16:41:40.453
Done