【问题标题】:Kafka Node - client.createTopic fails code 38Kafka 节点 - client.createTopic 失败代码 38
【发布时间】:2020-03-26 21:33:14
【问题描述】:

我在创建主题的节点中创建了一个小的 kafka 代码。 我总是得到没有错误的响应,但在数据内部有一个错误:

收到主题的错误代码 38。

我正在使用 kafka docker 连接到 kafka。图片:

wurstmeister/zookeeper

代码如下:

const kafka = require('kafka-node')
consumerOptions = {groupId: 'auditGroup'}
const topic = 'Audit-test3'
const {
    Producer, Consumer, KeyedMessage, ConsumerGroup,
} = kafka
const kafkaHost = 'localhost:9092'
  console.log(`kafka - URL = ${kafkaHost}`)

  const clientTopic = {
    topic,
    partitions: 10,
    replicationFactor: 3
  }

  const client = new kafka.KafkaClient({ kafkaHost })
  const producer = new Producer(client)
  const consumer = new Consumer(client, [], { autoCommit: true, ...consumerOptions })


  client.once('connect', () => {
    console.log('kafka - client connected')
    client.createTopics([clientTopic], clientTopicCallback)
    client.refreshMetadata([topic], () => console.log('kafka - client connected and refreshed metadata'))
  })

  const clientTopicCallback = (err, data) => {
    if(err){
      console.error(`kafka - error createing topic at client. ${err.message}. ${err.stack}`, err)
      return
    }

    if(data[0].error){
      console.error(`kafka - error createing topic at client. ${data[0].error}.`)
    }
  } 

【问题讨论】:

    标签: node.js docker apache-kafka


    【解决方案1】:

    错误代码 38 表示复制因子无效。你有多少个卡夫卡经纪人?如果要将replication-factor设置为3,则至少需要3个可用的broker。

    【讨论】:

      【解决方案2】:

      错误 38 是 INVALID_REPLICATION_FACTOR。所有 Kafka 错误代码都记录在协议页面中:http://kafka.apache.org/protocol#protocol_error_codes

      您正在尝试创建一个包含 3 个副本的主题。如果在线代理少于请求的复制因子,集群通常会返回此错误。

      【讨论】:

      • 这可能是问题所在,一旦删除它就通过了
      猜你喜欢
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      相关资源
      最近更新 更多