卡夫卡节点未检测到卡夫卡经纪人

时间:2019-08-24 04:59:41

标签: docker apache-kafka docker-compose apache-zookeeper kafka-producer-api

我目前在我的应用程序中使用的是Kafka节点,但是我无法将其连接到我之前提出的Kafka代理中。

首先,我用wurstmeister / kafka docker映像启动kafka代理。我还用jplock / zookeeper图像来调动Zookeeper。 我会使用wurstmeister / kafka图像自动创建一个带有环境变量的主题。像这样:

zookeeper:
  image: jplock/zookeeper
  ports:
    - "2181:2181"
  networks:
  - bitmex_backend

kafka:
  image: wurstmeister/kafka:latest
  ports:
    - "9092:9092"
  depends_on:
    - zookeeper
  environment:
    KAFKA_ADVERTISED_HOST_NAME: localhost
    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    KAFKA_LISTENERS: "PLAINTEXT://:9092"
    KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
    KAFKA_CREATE_TOPICS: "Topic1:1:1"
  networks:
  - bitmex_backend

我通过列出来自kafka的所有主题来验证容器已启动,该主题返回正确的主题编号和名称。

然后我想调出一个生产者并在调用端点时对其进行验证,所以我这样做:

// Import the WebFramework for routing
const Koa = require('koa')
const route = require('koa-route')
var kafka = require('kafka-node');
client = new kafka.Client(),
producer = new kafka.Producer(client);
// TODO : Generate a position/history endpoint 

module.exports = async () => {
    const app = new Koa()

// Retrive all the open positions from all the bots in the system
app.use(route.get('/open', async (ctx) => {
        producer.on('ready', function () {
            console.log('Producer is ready');
        });

        producer.on('error', function (err) {
            console.log('Producer is in error state');
            console.log(err);
        })

    // Response
    ctx.status = 200
    ctx.body = {
        data : "success",
    }
}))

return app

此代码运行时没有错误,但也没有输出。当我检查日志时,没有console.log的端点被正确调用,以证明端点已加载。

任何想法或指针都非常受欢迎,因为我已经坚持了一段时间。

0 个答案:

没有答案