108. Standalone Streaming Applications

要从 broker(例如 RabbitMQ 或 Kafka)发送或接收消息,您可以使用spring-cloud-function-stream适配器。将适配器与 Spring Cloud Stream 中的相应 binder 一起添加到 classpath。适配器将作为Processor(输入和输出流)绑定到消息 broker,除非用户使用spring.cloud.function.stream.{source,sink}.enabled=false明确禁用其中一个或另一个。

传入消息被路由到 function(或 consumer)。如果只有一个,那么选择是显而易见的。如果有多个函数可以接受传入消息,则会检查消息以查看是否存在包含 function 的 name 的stream_routekey标头。路由 headers 或 function 名称可以使用逗号或 pipe-separated name 组成。标题也会添加到供应商的外发邮件中。没有 route key 的消息可以通过指定spring.cloud.function.stream.{processor,sink}.name专门路由到 function 或 consumer。如果无法识别单个 function 来处理传入消息,则会出现错误,除非您设置spring.cloud.function.stream.shared=true,在这种情况下,此类消息将发送到所有兼容函数。可以使用spring.cloud.function.stream.source.name选择单个供应商来提供来自供应商的输出消息(如果有多个可用)。

如果消息 broker 不可用,并且 function 目录包含在访问时立即生成消息的供应商,则某些 binders 将在启动时失败。您可以使用spring.cloud.function.strean.supplier.enabled=false flag 在启动时关闭供应商的自动发布。