是一种分布式的,基于发布/订阅的消息系统,消息以消息队列的形式进行发送
npm i kafka-node
配置kafka的地址和topic,放在config文件中方便修改配置
- kafaka: {
- kafkaHost: "卡夫卡地址",
- topic1: "topic1",
- topic3: "topic2",
- topic2: "topic3",
- },
- // 创建Kafka客户端
- const client = new kafka.KafkaClient({ kafkaHost: config.kafaka.kafkaHost });
-
- // 创建消费者
- const kafaka_watch = new kafka.Consumer(client, [
- { topic: config.kafaka.topic_test }
- ]);
-
- // 创建生产者
- const producer = new kafka.Producer(client);
- // 发送消息
- function kafka_send(topic, messages) {
- const payload = [{ topic, messages }];
- producer.send(payload, function (err, data) {
- if (err) {
- console.error("Error sending message:", err);
- } else {
- // console.log("Message sent successfully:", JSON.parse(messages));
- }
- });
- }
topic:Topic(主题)是消息的逻辑分类或者容器。它是 Kafka 中最基本的概念之一,用于组织和管理消息的发布和订阅。
我的理解是一个topic就是一个消息队列,为了让各种不同的消息不打岔,才分出不同的topic。
uuid:UUID(Universally Unique Identifier)是一种用于唯一标识消息的标识符。每个消息都会被分配一个UUID,以确保消息的唯一性和跟踪性。uuid放在放在message里,可以用uuidv4生成。