【问题标题】:Test kafka and flink integration flow测试kafka和flink集成流程
【发布时间】:2018-09-25 23:13:42
【问题描述】:

例如,我想测试 Kafka / Flink 与 FlinkKafkaConsumer011FlinkKafkaProducer011 的集成。

流程如下:

  1. 使用 Flink 从 kafka 主题中读取
  2. 使用 Flink 进行一些操作
  3. 使用 Flink 写入另一个 kafka 主题

以字符串为例,从输入主题中读取字符串,转换为大写,写入新主题。

问题是如何测试流程?

当我说测试时,这是单元/集成测试。

谢谢!

【问题讨论】:

  • 你可以去github.com/manub/scalatest-embedded-kafka看看。它是在 Kafka 上进行测试的绝佳工具。
  • 我已经检查了这个库,问题是使用 Flink 我们必须使用 FlinkKafkaConsumer***FlinkKafkaProducer***,而且它似乎无法使用这个嵌入式 kafka,因为它们不是KafkaConsumer 或 KafkaProducer。

标签: scala apache-kafka integration-testing apache-flink


【解决方案1】:

Flink 文档中有一个关于如何为转换运算符编写单元\集成测试的小文档:link。该文档还有一小部分关于测试检查点和状态处理,以及关于使用 AbstractStreamOperatorTestHarness。

不过,我认为您对端到端集成测试(包括测试源和接收器)更感兴趣。为此,您可以启动一个 Flink 迷你集群。以下是启动 Flink 迷你集群的示例代码的链接:link

您还可以在 JVM 中启动 Kafka 代理并将其用于测试目的。 Flink 的 Kafka 连接器用于集成测试。下面是启动 Kafka 服务器的示例代码:link

如果您在本地运行,您可以使用一个简单的生成器应用程序为您的源 Kafka 主题生成消息(有很多可用的。您可以连续生成消息或根据不同的配置间隔生成消息)。以下是本地运行时如何设置 Flink 的作业全局参数的示例:Kafka010Example

另一种选择是创建一个集成环境(相对于生产环境)来运行您的端到端测试。您将能够真正感受到您的程序在类似生产的环境中的行为方式。始终建议拥有完整的并行测试环境 - 包括测试源\接收 Kafka 主题。

【讨论】:

  • 您对如何创建这样的集成环境有什么建议吗?我想从 k8s 开始一切,为了引导主题中的一些数据,所以我的工作将能够读取它,我正在考虑创建一个新的工作来创建这样的数据,然后在使用来自的数据时提供模拟响应我的产品工作,所以我可以模拟我所有的生产环境。你知道\有比这个更好的想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 2017-06-30
  • 2017-11-29
相关资源
最近更新 更多