Spring云流应用程序-在步骤之间传递信息

Spring云流应用程序-在步骤之间传递信息,spring,spring-boot,spring-cloud-stream,spring-cloud-dataflow,Spring,Spring Boot,Spring Cloud Stream,Spring Cloud Dataflow,有谁能建议我在SCDF管道的各个步骤之间传递元数据的方法吗? 以下是我试图解决的一些用例: 使用“文件”源时,文件详细信息(如名称、目录、大小等)将传递到下一步 我希望将在流程步骤中创建的一些元数据传递到以下步骤。(此元数据与有效负载分开) 我希望有一种方法可以在rabbit或kafka消息头中发送此类详细信息。您当然可以/应该使用消息头。 请记住,您控制处理程序方法的返回值。如果您的处理程序方法返回POJO,那么框架将从中创建一条消息,复制某些头等。但是,在您的情况下,如果您希望控制进入消息(

有谁能建议我在SCDF管道的各个步骤之间传递元数据的方法吗? 以下是我试图解决的一些用例:

  • 使用“文件”源时,文件详细信息(如名称、目录、大小等)将传递到下一步
  • 我希望将在流程步骤中创建的一些元数据传递到以下步骤。(此元数据与有效负载分开)

  • 我希望有一种方法可以在rabbit或kafka消息头中发送此类详细信息。

    您当然可以/应该使用消息头。 请记住,您控制处理程序方法的返回值。如果您的处理程序方法返回POJO,那么框架将从中创建一条消息,复制某些头等。但是,在您的情况下,如果您希望控制进入消息(包括头)的所有内容,则只需定义返回消息的处理程序方法(见下文):

    @StreamListener(…)
    @发送到(…)
    公共消息句柄(字符串str){
    . . .
    返回MessageBuilder.withPayload(..).setHeader(..).setHeader(..).build();
    }
    
    这是很好的信息。非常感谢。如果使用入门应用程序file source,如何将文件信息传递到下一步?我意识到,我只需要使用handler方法的参数以及org.springframework.messaging.Message.Message类型以及@oleg Zhurakousky推荐的输出类型就可以了。谢谢您文件源的1.3.0.RELEASE是否可能有一个bug不发出文件名和其他头属性?(我使用FileReadingMode作为“内容”)这当然是可能的,但鉴于2.0.0.RELEASE是最新的版本,并且包含许多改进,我建议继续使用它。
    @StreamListener(..)
    @SendTo(..)
    public Message<?> handle(String str) {
      . . .
      return MessageBuilder.withPayload(..).setHeader(..).setHeader(..).build();
    }