【问题标题】:Can't get KafkaProducer/KafkaConsumer to work in Scala无法让 KafkaProducer/KafkaConsumer 在 Scala 中工作
【发布时间】:2016-10-26 00:47:39
【问题描述】:

我正在尝试创建一个简单的 KafkaProducer 和 KafkaConsumer,以便我可以将数据发送到代理上的主题,然后验证是否收到了数据。我有以下两种方法来定义我的消费者和生产者,以及我如何发送消息。 send 方法至少需要 20 秒才能完成,据我所知,consumer.poll 方法从未真正完成,但我离开的最长时间是 10 分钟。

有人对我做错了什么有建议吗?生产者/消费者是否有一些我没有正确设置的属性?这些属性是直接从文档中复制的,所以我不明白为什么它们不起作用。

KafkaProducer docs
KafkaConsumer docs

"verify we can send to producer" in {
    val consumer = createKafkaConsumer("address:9002")
    val producer = createKafkaProducer("address:9002")

    val message = "I am a message"
    val record = new ProducerRecord[String, String]("myTopic", message)

    producer.send(record)
    TimeUnit.SECONDS.sleep(5)
    val records = consumer.poll(5000)
    println("records: "+records)
    consumer1.close()
}

def createKafkaProducer(kafka: String): KafkaProducer[String,String] = {
    val props = new Properties()
    props.put("bootstrap.servers", kafka)
    props.put("acks", "all")
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")
    props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer")

    new KafkaProducer[String,String](props)
}

def createKafkaConsumer(kafka: String): KafkaConsumer[String, String] = {
    val props = new Properties()
    props.put("bootstrap.servers", kafka)
    props.put("group.id", "test")
    props.put("enable.auto.commit", "true")
    props.put("auto.commit.interval.ms", "1000")
    props.put("session.timeout.ms", "30000")
    props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
    props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
    val consumer = new KafkaConsumer[String, String](props)
    consumer.subscribe(Collections.singletonList("myTopic"))
    consumer
}

编辑:我已经更新了我的代码,以便我现在可以从 send 方法中获得响应,而且似乎 org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms. 会超时

【问题讨论】:

  • 你要关闭制片人了吗?
  • 不,我不是,这是一件好事。
  • 您是否在运行代码之前创建了主题?
  • 是的,这个话题确实存在

标签: java scala apache-kafka


【解决方案1】:

原来我遇到了一个 DNS 问题,这意味着我实际上并没有连接到代理。修复此问题允许消息通过,配置没有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2020-08-15
    • 1970-01-01
    • 2018-02-26
    • 2019-07-06
    • 2015-11-27
    相关资源
    最近更新 更多