Flink Kafka Producer如何在Scala中设置语义

时间:2019-02-25 02:03:37

标签: scala apache-kafka apache-flink flink-streaming

我想设置Flink kafka生产者语义。EXACTLY_ONCE,我正在使用以下scala代码

alertEnrichStream.map(_.toJsonStr)
  .addSink(
    new FlinkKafkaProducer011(
      kafkaBrokers,
      kafkaOutputTopic,
      new SimpleStringSchema))

如何编辑代码以设置语义?

2 个答案:

答案 0 :(得分:0)

使用可以定义语义的构造函数。像这样一个:

fscanf(fp, "(%le %le)\n", &varDouble1, &varDouble2);

答案 1 :(得分:0)

我想出了这个教练的用法,并且效果很好:

val producerProps = new Properties
producerProps.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers)
producerProps.setProperty(ProducerConfig.RETRIES_CONFIG, "2147483647")
producerProps.setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "1")
producerProps.setProperty(ProducerConfig.ACKS_CONFIG, "all")
producerProps.setProperty(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true")

new FlinkKafkaProducer011[String](
  topic,
  new KeyedSerializationSchemaWrapper[String](new SimpleStringSchema),
  producerProps,
  Optional.of(new FlinkFixedPartitioner[String]),
  FlinkKafkaProducer011.Semantic.EXACTLY_ONCE,
  10
)