Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

消费者端无法连接到kafka,连接地址被固定 #1689

Open
Dr-SummerFlower opened this issue May 26, 2024 · 2 comments
Open

消费者端无法连接到kafka,连接地址被固定 #1689

Dr-SummerFlower opened this issue May 26, 2024 · 2 comments

Comments

@Dr-SummerFlower
Copy link

我在使用kafkajs写一个demo时发现了无法连接的情况,根据我对日志的排查,发现broker固定连接一个名为“kafka:9092”的地址,而不是我在实例化kafkajs时设定的主机地址,这就导致我无法连接到正确的服务器,我通过在计算机的hosts文件中添加192.168.21.11 kafka解决了这个问题,但是我还是希望你们能修复这个问题。

我的项目依赖:

{
  "dependencies": {
    "express": "^4.19.2",
    "kafkajs": "^2.2.4"
  }
}

出现问题时的日志:

{"level":"ERROR","timestamp":"2024-05-26T09:41:29.695Z","logger":"kafkajs","message":"[Connection] Connection timeout","broker":"kafka:9092","clientId":"test"}

我的代码

import * as express from 'express';
import { Express, Request, Response } from 'express';
import { Kafka, Partitioners, Producer } from 'kafkajs';

const app: Express = express();

const kafka: Kafka = new Kafka({
    clientId: 'test',
    brokers: ['kafka:9092'],
});
const producer: Producer = kafka.producer({
    createPartitioner: Partitioners.LegacyPartitioner,
    allowAutoTopicCreation: true,
});

app.use(express.json());

app.post('/data', async (req: Request, res: Response): Promise<void> => {
    await producer.connect();
    await producer.send({
        topic: 'test-topic',
        messages: [
            {
                value: JSON.stringify(req.body),
            },
        ],
    });
    await producer.disconnect();
    res.status(200).send('请求成功');
});

app.listen(25551, (): void => {
    console.log('服务启动在:localhost:25551');
});

/**
 * @File: client.ts
 * @author: 夏花
 * @time: 2024-05-26
 */

import { Consumer, Kafka } from 'kafkajs';

const kafka: Kafka = new Kafka({
    clientId: 'test',
    brokers: ['192.168.21.11:9092'],
});
const consumer: Consumer = kafka.consumer({
    groupId: 'test-group',
});

(async (): Promise<void> => {
    await consumer.connect();
    await consumer.subscribe({
        topic: 'test-topic',
        fromBeginning: true,
    });
    await consumer.run({
        eachMessage: async ({ topic, partition, message }): Promise<void> => {
            console.log({
                topic,
                partition,
                offset: message.offset,
                value: message.value?.toString(),
            });
        },
    });
})();
@iejixudong
Copy link

const kafka: Kafka = new Kafka({
clientId: 'test',
brokers: ['kafka:9092'],
});
这个是你自己配置的

@Dr-SummerFlower
Copy link
Author

const kafka: Kafka = new Kafka({ clientId: 'test', Brokers: ['kafka:9092'], });这是你自己配置的

问题在于我使用ip也是这样,返回的日志任然是"kafka:9092",而不是我配置的地址

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants