首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringXD的字段值计数器在将Json对象数组拆分为单个对象后无法工作

SpringXD的字段值计数器在将Json对象数组拆分为单个对象后无法工作
EN

Stack Overflow用户
提问于 2015-10-21 23:24:46
回答 1查看 67关注 0票数 0

假设我的SpringXD源数据包含一个json对象(dogs)数组,我希望计算每个数组元素(dog)所具有的字段值(dogType)。

为此,我首先定义输入流并使用拆分器对数组进行分解。

  1. 定义分离器 xd:>stream创建dogstream --定义“表达式=#jsonPath(有效载荷,'$.*') \ log”--部署 xd:>http post -数据“{\”狗“:\”贵宾犬“},{\”狗“:\”吉娃娃“},{\”狗“:\”贵宾狗“}

2015-10-21T10:52:31-0700 1.2.0.dog=poodle sink.dogstream- {dog=poodle}

2015-10-21T10:52:31-0700 1.2.0. 1.2.0.RELEASE sink.dogstream- {dog=chihuahua}

2015-10-21T10:52:31-0700 1.2.0.dog=poodle sink.dogstream- {dog=poodle}

所以分离器起作用了。

  1. 接下来,向上面的流添加一个字段值计数器。 流创建--名称dogCounter --定义“tap:name:dogstream>字段-value-计数器-field name=dogCounter”--部署

现在,问题是如果我发布更多的数据(狗),应该创建字段值计数器(我猜是懒惰的创建),并为每种狗类型增加狗计数器,但我没有看到任何事情发生。rest端点(http://localhost:9393/metrics/field-value-counters/)没有显示我创建的计数器。

有谁能想到原因吗?SpringXD支持这个吗?我认为这是一个合法的用例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-22 13:06:51

两个问题:

1.错误的类型

根据文档化,字段值计数器只支持POJOTupleJSON StringjsonPath发出一个LinkedHashMap;所以我们需要将它转换回JSON.

代码语言:javascript
复制
xd:>stream create dogstream --definition "http | splitter --expression=#jsonPath(payload,'$.[*]') --outputType=application/json | log" --deploy

在这里,我使用了outputType属性。

2.错误的尖点

您正在敲击流的错误部分;默认情况下,对第一个|应用抽头;您需要在拆分器之后点击.

代码语言:javascript
复制
xd:>stream create --name dogCounter --definition "tap:stream:dogstream.splitter > field-value-counter --fieldName=dog" --deploy
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33270926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档