所有的
我使用本地服务器运行spring cloud数据流。当我运行像这样定义的流
时http --port=8787 | transform --expression=payload.getValue('name') |
jdbc --columns=name --table-name=http_table --password=******
--driver-class-name=org.mariadb.jdbc.Driver --username=root --url='jdbc:mysql://127.0.0.1:3306/target_data'
我使用处理器转换
transform --expression=payload.getValue('name')
但它有错误
2017-09-16 20:01:57,561 ERROR -kafka-listener-1 o.s.k.l.LoggingErrorHandler:37 - 处理时出错: ConsumerRecord(topic = http_jdbc04.http,partition = 0,offset = 0, CreateTime = 1505563314419,checksum = 1043955671,序列化密钥大小 = -1,序列化值大小= 102,键= null,值= [B @ 5b1b4ce3) org.springframework.integration.transformer.MessageTransformationException: 无法转换消息;嵌套异常是 org.springframework.messaging.MessageHandlingException:嵌套 例外是 org.springframework.expression.spel.SpelEvaluationException:EL1004E: 方法调用:无法找到方法getValue(java.lang.String) java.lang.String类型,failedMessage = GenericMessage [payload = {" name":" world"},headers = {kafka_offset = 0, id = 0392ca58-6644-91fb-9454-a41e83854955,kafka_receivedPartitionId = 0, 的contentType =应用/ JSON;字符集= UTF-8, kafka_receivedTopic = http_jdbc04.http,timestamp = 1505563317552}]
以下是我关注spring-cloud-dataflow-docs
的文档Spring云数据流版本:
1.spring cloud dataflow本地服务器1.2.3.RELEASE
2.Java:1.8.0
答案 0 :(得分:0)
我解决了这个问题。
这不起作用:
transform --expression=payload.getValue('name')
您应该使用#jsonPath(payload, '<json path expression>')
。