假设我的SpringXD源数据包含一个json对象(dogs)数组,我希望计算每个数组元素(dog)所具有的字段值(dogType)。
为此,我首先定义输入流并使用拆分器对数组进行分解。
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}
所以分离器起作用了。
现在,问题是如果我发布更多的数据(狗),应该创建字段值计数器(我猜是懒惰的创建),并为每种狗类型增加狗计数器,但我没有看到任何事情发生。rest端点(http://localhost:9393/metrics/field-value-counters/)没有显示我创建的计数器。
有谁能想到原因吗?SpringXD支持这个吗?我认为这是一个合法的用例。
发布于 2015-10-22 13:06:51
两个问题:
1.错误的类型
根据文档化,字段值计数器只支持POJO、Tuple或JSON String。jsonPath发出一个LinkedHashMap;所以我们需要将它转换回JSON.
xd:>stream create dogstream --definition "http | splitter --expression=#jsonPath(payload,'$.[*]') --outputType=application/json | log" --deploy在这里,我使用了outputType属性。
2.错误的尖点
您正在敲击流的错误部分;默认情况下,对第一个|应用抽头;您需要在拆分器之后点击.
xd:>stream create --name dogCounter --definition "tap:stream:dogstream.splitter > field-value-counter --fieldName=dog" --deployhttps://stackoverflow.com/questions/33270926
复制相似问题