在SCDF流中,AWS S3以字节阵列格式而不是可读格式接收数据

时间:2018-08-17 21:32:25

标签: spring-cloud spring-cloud-stream spring-cloud-dataflow

已在PCF中部署的SCDF中的当前工作流:

stream create TEST_s3 --definition“ trigger --initialDelay = 0 --fixedDelay = 1 --timeUnit = MINUTES --payload = {'a1':123} --outputType = application / x-java-serialized-object | header-enricher --headers ='file ='TestFile''| s3-sink-TEST“ --deploy

提供了所有正确的s3接收器应用程序相关的环境变量,例如:

                cloud.aws.stack.auto=false \
                cloud.aws.credentials.accessKey=<accessKey> \
                cloud.aws.credentials.secretKey=<secretKey> \
                cloud.aws.region.static=us-east-1 \
                s3.bucket=<bucket-name> \
                s3.key-expression=headers.file_name \
                s3.acl=PublicReadWrite"

流通过将有效负载上传到s3可以正常工作,但是主要缺点是它是 bytearray格式

S3接收器上载的OutPut文件:

                aced 0005 7372 0025 6a61 7661 2e75 7469
                6c2e 436f 6c6c 6563 7469 6f6e 7324 556e
                6d6f 6469 6669 6162 6c65 4d61 70f1 a5a8
                fe74 f507 4202 0001 4c00 016d 7400 0f4c
                6a61 7661 2f75 7469 6c2f 4d61 703b 7870
                7372 0017 6a61 7661 2e75 7469 6c2e 4c69
  

在Source trigger模块中,我正在将有效载荷转换为byte []格式   因为S3接收器期望有效载荷采用以下格式

     
      
  • java.io.File
  •   
  • java.io.InputStream
  •   
  • byte []
  •   
  • PutObjectRequest
  •   

当我尝试在源触发器--outputType = text / plain中以“纯文本”或字符串格式发送有效负载时,S3接收器抛出以下错误:

  

原因:java.lang.IllegalArgumentException:不支持的有效负载   类型:[类java.lang.String]。唯一支持的有效负载   上传请求是java.io.File,java.io.InputStream,byte []和   PutObjectRequest。


总错误: 原因:java.lang.IllegalArgumentException:不支持的有效载荷类型:[类java.lang.String]。上载请求仅支持的有效负载是java.io.File,java.io.InputStream,byte []和PutObjectRequest。 2018-08-17T16:11:54.864-04:00 [APP / PROC / WEB / 0] [OUT]在org.springframework.integration.aws.outbound.S3MessageHandler.upload(S3MessageHandler.java:370) 2018-08-17T16:11:54.864-04:00 [APP / PROC / WEB / 0] [OUT]在org.springframework.integration.aws.outbound.S3MessageHandler.handleRequestMessage(S3MessageHandler.java:271) 2018-08-17T16:11:54.864-04:00 [APP / PROC / WEB / 0] [OUT]在org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:109) 2018-08-17T16:11:54.864-04:00 [APP / PROC / WEB / 0] [OUT]在org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:158)


所以这就是我在源触发器中借助“ --outputType = application / x-java-serialized-object”将有效载荷数据转换为byte []格式的原因。但是S3接收器推送的最终文件也是字节数组格式。

  

我应该在接收的S3接收器中添加任何参数吗?   字节数组格式的文件,但以可读格式

推送有效载荷
                So final output file content in S3 should be like :
                {'a1':123}

0 个答案:

没有答案