阅读 113

NodeJS操作Kafka

本文将会介绍在windows环境下启动Kafka,并通过nodejs作为客户端,生产并消费消息。

第一步,Kafka需要java运行时,先安装配置java环境。通过在命令行中输入java -version确认java是否成功安装(可能需要查看windows的环境变量中是否有java)。
第二步,下载最新版本的压缩包(.tgz格式),并解压。
分别在两个命令行里面启动zookeeper、kafka(解压缩路径下)
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
bin\windows\kafka-server-start.bat config\server.properties

说明一下zookeeper和kafka的关系:zookeeper是集群的调度者,kafka才是消息队列。 zookeeper的默认端口:2181,kafka的默认端口:9092
相关配置可以在config文件下的server.properties和zookeeper.properties中找到

消费者客户端需要的group.id可以在config->consumer.properties中找到。

第三步,使用命令行测试生产、消费
//创建一个topic:test
bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

//查看topic
bin\windows\kafka-topics.bat --list --zookeeper localhost:2181

//创建生产者
bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

//创建消费者
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

第四步,发送消息
在生产者窗口,随意输入一条消息,可以在消费者窗口看到该消息。

最后,使用nodejs访问kafka
npm init -y
npm install kafkajs

新建demo.js,输入以下代码

const { Kafka } = require(‘kafkajs‘)

const kafka = new Kafka({
  clientId: ‘my-app‘,
  brokers: [‘localhost:9092‘]
})

const producer = kafka.producer()
const consumer = kafka.consumer({ groupId: ‘test-consumer-group‘ })

const run = async () => {
  // Producing
  await producer.connect()
  await producer.send({
    topic: ‘test-topic‘,
    messages: [
      { value: ‘Hello KafkaJS user!‘ },
    ],
  })

  // Consuming
  await consumer.connect()
  await consumer.subscribe({ topic: ‘test-topic‘, fromBeginning: true })

  await consumer.run({
    eachMessage: async ({ topic, partition, message }) => {
      console.log({
        partition,
        offset: message.offset,
        value: message.value.toString(),
      })
    },
  })
}

run().catch(console.error)

最后执行命令
node demo.js

参考:


原文:https://www.cnblogs.com/Andy1982/p/15211652.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐