无法获取通过 RabbitMQ 发送的 json 字符串的 Spring XD 字段值计数器
Couldn't get Spring XD field-value-counter of a json string that is sent through RabbitMQ
我正在尝试构建一个采用 json 字符串的字段值计数器的 Spring XD 流。
Json 字符串通过 RabbitMQ 队列在消息中发送,消息头内容类型为 application/json。
Spring XD 记录消息(Json 字符串)并将其写入文件,但它不会 return 字段值计数器,也不会在 [=33= 中的列表中显示它] xd shell (xd:>字段值计数器列表).
这是我的 shell 命令
stream create rabbitqueue1 --definition "rabbit | log"
stream create rabbitqueue1jsonset1 --definition "tap:stream:rabbitqueue1 > field-value-counter --fieldName=type --name=proftype" --deploy
stream create rabbitqueue1out --definition "tap:stream:rabbitqueue1 > file --binary=true --name=rabbitqueue1outfile" --deploy
stream deploy rabbitqueue1
这是一个例子 json 字符串
{
"created": "2017-01-18T09:45:34.716+05:30",
"firstName": "FirstName",
"id": 1,
"lastName": "LastName",
"profileName": "Profname",
"type": "admin"
}
问题是为什么 Spring XD 流不计算 json 字符串的字段值?
FVC 只能处理 Tuple
或 String
有效负载(或 java bean)。
Rabbit 源默认生成 byte[]
,除非 content-type 是 text/plain
。
如果您将 --inputType=text/plain
添加到 field-value-counter
,消息总线会将 byte[]
转换为 String
。
我正在尝试构建一个采用 json 字符串的字段值计数器的 Spring XD 流。 Json 字符串通过 RabbitMQ 队列在消息中发送,消息头内容类型为 application/json。 Spring XD 记录消息(Json 字符串)并将其写入文件,但它不会 return 字段值计数器,也不会在 [=33= 中的列表中显示它] xd shell (xd:>字段值计数器列表).
这是我的 shell 命令
stream create rabbitqueue1 --definition "rabbit | log"
stream create rabbitqueue1jsonset1 --definition "tap:stream:rabbitqueue1 > field-value-counter --fieldName=type --name=proftype" --deploy
stream create rabbitqueue1out --definition "tap:stream:rabbitqueue1 > file --binary=true --name=rabbitqueue1outfile" --deploy
stream deploy rabbitqueue1
这是一个例子 json 字符串
{
"created": "2017-01-18T09:45:34.716+05:30",
"firstName": "FirstName",
"id": 1,
"lastName": "LastName",
"profileName": "Profname",
"type": "admin"
}
问题是为什么 Spring XD 流不计算 json 字符串的字段值?
FVC 只能处理 Tuple
或 String
有效负载(或 java bean)。
Rabbit 源默认生成 byte[]
,除非 content-type 是 text/plain
。
如果您将 --inputType=text/plain
添加到 field-value-counter
,消息总线会将 byte[]
转换为 String
。