在Spring Cloud Stream中创建的“点击”将另存为“命名目的地”

问题描述

我试图理解Spring Cloud Stream中的概念。 “点击”和“命名目的地”这两个概念令我感到困惑。

我正在尝试创建一个流,其水龙头名为“ some-source”:

https://www.kaggle.com/c/titanic

但是,在我保存流之后,它成为了“命名目的地”:

enter image description here

我的问题是:

  1. “点击”和“命名目的地”有什么区别?
  2. 为什么在保存流后将“点击”变成“命名目的地”?

解决方法

named目的地是邮件系统中的目的地。例如,RabbitMQ的exchange或Apache Kafka的topic

当您将入站/出站绑定设置为特定的目标名称时,Spring Cloud Stream会负责创建这些named目标(例如RabbitMQ交换,Apache Kafka主题)。

在SCDF中,当您创建流时,SCDF使用特定的语法(。)配置这些目标名称。

例如,假设我创建了这样的流:

S1 =时间| t1:转换|日志

部署流S1后,您将看到使用以下名称创建的目的地(如果使用RabbitMQ或Apache Kafka,则它们将分别交换或主题):

S1.time S1.t1

因为timetransform是生产者。

要回答您的问题:

“点击”和“命名目的地”有什么区别?

在SCDF中,tap本质上是在生产者应用的出站端点上创建的named目标。因此,当您在流S1的time输出上添加拍子时,最终将使用named目标S1.time

您可以在创建主流时(此处为S1)创建tap,也可以稍后通过引用流的命名目的地来创建新的tap流。 S1.time,S1.t1)

保存流后,为什么“点击”会变成“命名目的地”?

Spring Cloud Stream具有消费者组模型(灵感来自Apache Kafka),该模型在它支持的所有绑定器中实现。这意味着,每次新的使用者绑定到消息传递系统上的destination(例如RabbitMQ的exchange或Apache Kafka的topic)时,都会有一个新的使用者组为该目的地创建。 tap就是创建一个新的流,该流在特定的named目的地上形成一个新的消费者组。

还有另外一种情况。

假设您要创建的流不是来自现有流的出站端点,而是要指向具有来自其他系统数据的特定named目标。在这些情况下,您将使用named目标创建流。由于Spring Cloud Stream的使用者组模型,您还将在此named目的地上创建一个新的使用者组。

例如,假设我有一个RabbitMQ交换中心或一个名为user_data的Kafka主题,它们已经从不属于SCDF流的其他源接收数据,那么您将创建一个新的流,如下所示:>

:user_data > transform | jdbc

前缀:用于引用SCDF中的命名目的地。