【问题标题】:Spring Cloud Stream Apps - Passing information between stepsSpring Cloud Stream Apps - 在步骤之间传递信息
【发布时间】:2018-04-30 19:58:34
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    @StreamListener(..)
    @SendTo(..)
    public Message<?> handle(String str) {
      . . .
      return MessageBuilder.withPayload(..).setHeader(..).setHeader(..).build();
    }
    

    【讨论】:

    • 这是很好的信息。谢谢你。如果使用入门应用程序,文件源,我如何让文件信息传递到下一步?是否可以不编写我自己的文件源版本?
    • 我意识到,我只需要使用处理程序方法的参数以及 org.springframework.messaging.Message 类型以及@oleg-Zhurakousky 推荐的输出类型。谢谢
    • 文件源的 1.3.0.RELEASE 是否可能存在不发出 file_name 和其他标头属性的错误? (我使用 FileReadingMode 作为“内容”)
    • 这当然是可能的,但鉴于 2.0.0.RELEASE 是最新版本并且包含许多改进,我建议坚持使用它。
    猜你喜欢
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    相关资源
    最近更新 更多