Допустим, мои исходные данные SpringXD содержат массив объектов json (собак), и я хочу подсчитать значение поля (dogType), которое имеет каждый элемент массива (собака).
Для этого сначала я определяю входной поток и использую разделитель для разложения массива.
Определить разделитель
xd:>stream create dogstream --definition "http | splitter --expression=#jsonPath(payload,'$.[*]') | log" --deploy
xd:>http post --data "[{\"собака\":\"пудель\"}, {\"собака\": \"чихуахуа\"}, {\"собака\":\"пудель\" }]"
2015-10-21T10:52:31-0700 1.2.0.ИНФОРМАЦИЯ О ВЫПУСКЕ sin.dogstream- {собака=пудель}
2015-10-21T10:52:31-0700 1.2.0.ИНФОРМАЦИЯ О ВЫПУСКЕ sin.dogstream- {собака=чихуахуа}
2015-10-21T10:52:31-0700 1.2.0.ИНФОРМАЦИЯ О ВЫПУСКЕ sin.dogstream- {собака=пудель}
Так что сплиттер работает.
Затем добавьте счетчик значения поля в вышеприведенный поток.
stream create --name dogCounter --definition "tap:stream:dogstream > счетчик значений поля --fieldName=dog" --deploy
Теперь, вот ВОПРОС. Если я отправлю больше данных (о собаках), SpringXD должен создать счетчик значения поля (я думаю, ленивое создание) и увеличить счетчик собаки для каждого типа собаки, но я этого не делаю. не вижу ничего происходящего. Остальная конечная точка (http://localhost:9393/metrics/field-value-counters/) не показывает счетчик, который я создал.
Кто-нибудь может подумать о причине? Поддерживает ли SpringXD это? Я думаю, что это законный вариант использования.