1、服务调用 Service invocation
InvokeMethodAsync方法,如果带请求参数,那么请求参数的泛型必须是对象,如 (stateKeyName为字符串)
var data = await _daprClient.InvokeMethodAsync<object, ProductModel>("productservice", "Product/GetState", stateKeyName, cts.Token); //服务调用成功,参数正常传过去了
var data = await _daprClient.InvokeMethodAsync<string, ProductModel>("productservice", "Product/GetState", stateKeyName, cts.Token); //服务调用成功,参数没传过去
对应的服务端,接受的参数也必须是object类型,string类型就获取不到参数。
(不一定正确,有待进一步验证,可以看看dapr .NET SDK的源码,附搬到码云的地址 https://gitee.com/arthaslcm/dotnet-sdk)
2、发布订阅
发布:
订阅:
如果订阅服务的参数类型直接放发布端传过来的数据类型是不行的,看了源码发现发布的时候数据封装在了一个对象中,所以接受参数的时候需要先解析json字符串取出来。。
上图中订阅端的参数类型可以为object,发布端传的参数放在object.data里,需要自己解析出来。
而源码中订阅的例子中是这样的,照着弄了半天才发现根本行不通啊。。
使用dapr .net Client SDK 踩过的坑(持续更新)
原文:https://www.cnblogs.com/arthaslcm/p/14888749.html