问题描述
我试图理解Spring Cloud Stream中的概念。 “点击”和“命名目的地”这两个概念令我感到困惑。
我正在尝试创建一个流,其水龙头名为“ some-source”:
https://www.kaggle.com/c/titanic
但是,在我保存流之后,它成为了“命名目的地”:
我的问题是:
- “点击”和“命名目的地”有什么区别?
- 为什么在保存流后将“点击”变成“命名目的地”?
解决方法
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
因为time
和transform
是生产者。
要回答您的问题:
“点击”和“命名目的地”有什么区别?
在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中的命名目的地。