一个连接器的多个转换器

rqmkfv5c  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(366)

在kafka连接器中,一个接收器连接器是否可能有多个转换器?例如,我们有一个用例,在这个用例中我们从一个主题接收格式为的数据 A ,但希望将其流到两个位置,一个是格式 A ,另一个格式为 B . 是否可以在单个连接器中执行此操作?

9jyewag0

9jyewag01#

对于sink连接器,connect框架使用转换器反序列化从kafka主题读取的消息。然后连接器就可以自由地将这些消息以它想要的任何格式传递到后端接收器系统。
但是,假设您有一个主题t,它将消息序列化为格式a,您希望将其传递给多个外部系统x和y。使用apachekafka和connect实现这一点的惯用方法是,让一个连接器示例使用t(使用converter for a反序列化消息)并将其写入系统x,另一个连接器示例使用t(使用converter for a反序列化消息)并将其写入系统y。这些连接器彼此独立,因此系统x中的问题可能会导致该连接器阻塞,而另一个连接器可以继续使用并写入y。在这两种情况下,连接器负责如何写入外部系统。转换器仅在接收器连接器的情况下用于反序列化从kafka主题读取的消息。
为什么不需要一个连接器来读取单个主题,并将其写入多个外部系统?因为双写问题意味着您可能会写入x,但无法写入y。或者更具体地说,您可以读取来自t的消息,写入x和y,但发现对y的请求失败。你可以很老练地重试,但是很多事情都会出错,而且有两个独立的连接器更简单。
现在,如果系统x和y是同一个kafka集群中的其他主题,那么您可能只想使用apachekafka的streamsapi。streams应用程序被设置为连续读取kafka主题,以流方式处理消息以计算新消息,并将这些新消息写入其他主题。但同样,您可能希望有两个独立的流拓扑,每个流拓扑使用主题t并写入主题x或y。

相关问题