我正在尝试生成流数据,以模拟一种情况,在这种情况下,我会在不同的时间范围内接收带有时间戳的两个值(整数类型),并且使用Kafka作为连接器。
我正在使用Flink环境作为消费者,但是我不知道哪种是针对生产者的最佳解决方案。 (如果可能,Java语法比Scala更好)
我应该直接从Kafka产生数据吗?如果是,最好的方法是什么? 或者,如果我以生产者的身份从Flink生产数据,然后将其发送给Kafka,并在最后由Flink再次使用,可能会更好?如何从flink做到这一点? 也许还有另一种简单的方法可以生成流数据并将其传递给Kafka。
如果是,请引导我实现目标。
答案 0 :(得分:1)
正如David也提到的那样,您可以使用KafkaProducer API在简单的Java中创建虚拟生产者,以根据您的需要计划和发送消息到Kafka。同样,如果您想要多个同时的生产者,则可以使用Flink进行。使用Flink,您将需要为生产者和消费者编写一份单独的工作。 Kafka基本上启用了ASync处理架构,因此它没有队列机制。因此最好将生产者和消费者的工作分开。
但是,请多考虑一下此测试的意图:
您是否要测试Kafka流的持久性,复制,偏移管理功能
在这种情况下,您需要同时制作同一主题的主题,并在消息中使用null或non-null键。
或您是否要测试Flink-Kafka连接器功能。
在这种情况下,您只需要一个生产者,就可以通过使生产者推送超出消费者处理能力的更多消息来进行内部压力测试。
或者您是否正在尝试测试主题分区和Flink流并行性。
在这种情况下,单个或多个生产者,但消息的密钥应为非空,您可以测试Flink执行程序如何与各个分区连接并观察其行为。
您可能还需要测试更多的想法,每个想法都需要在生产者中完成或不完成。
如果需要,您可以签出https://github.com/abhisheknegi/twitStream
来使用Java API提取推文。