最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Node Js App 在工作 2 小时后出现 EADDRNOTAVAlL 错误

网站源码admin39浏览0评论

Node Js App 在工作 2 小时后出现 EADDRNOTAVAlL 错误

Node Js App 在工作 2 小时后出现 EADDRNOTAVAlL 错误

我有一个应用程序使用来自 Kafka 的数据并将其发送到名为 DB 的容器。程序启动后,它可能会工作 2 小时,然后它会向消费者提供 Axios 捕获:

Api error :connect:EADDRNOTAVAL:3002(这是数据库容器的端口)

有人知道为什么会这样吗?

我分享消费者,数据库功能代码以及数据库

index.js
文件

谢谢你的帮助

**消费者端代码**

import { Kafka } from "kafkajs";
import axios from "axios";
// Paketlerin nereden geldiğinin bilgisi
const clientId = "my-app";

// Cluster Hangi Porta Yollayacak
const brokers = ["kafka:9092"];

// Gonderilen Topic
const topic = ["Topic2", "Topic3"];
const kafka = new Kafka({ clientId, brokers });
const consumer = kafka.consumer({ groupId: clientId });

let buffer = [];

export const consume = async () => {
  await consumer.connect();
  await consumer.subscribe({ topics: ["Topic2", "Topic3"] });

  await consumer.run({
    autoCommitInterval: 500,
    eachMessage: async ({ topic, partition, message }) => {
      const pkg = JSON.parse(message.value);
      if (buffer.length < 500) {
        buffer.push(pkg);
      }
    },
  });
};

setInterval(async () => {
  const data = JSON.stringify(buffer);

  buffer = [];
  if (!data.length > 0) {
    console.log("İşlenecek veri olmadıgı için veri işleme alınmadı ");
  } else {
    try {
      await axios.post("http://db:3002/handle_data", data, {
        headers: {
          "Content-Type": "application/json",
        },
      });
      data = [];
    } catch (error) {
      console.error(`API error:${error}`);
    }
  }
}, 200);

DB SIDE CODE 这边运行在端口 3002

index.js文件是:**

  import { handle_data } from "./handle_data.js";
  import express from "express";
  //import sql from "mssql";
  import { MongoClient } from "mongodb";
  //const { MongoClient } = require("mongodb");
  import cors from "cors";

  const app = express();
  app.use(cors());
  app.use(express.json({ limit: "100mb" }));

  app.post("/handle_data", handle_data);
  app.listen(3002, () => {
    console.log("DB SİDE İS ALLİVE ");
  });

**
功能:**

import sql from "mssql";

export const handle_data = (req, res) => {
  const dataArray = req.body;

  if (dataArray.length > 0) {
    bulkInsert(req.body);
  } else {
    console.log(
      "Eklenecek Konum Verisi Olmadıgı İçin ekleme işlemi yapılamadı "
    );
  }
};
async function bulkInsert(data) {
  const config = {
    server: "A",
    database: "A",
    port: 1433,
    user: "A",
    password: "A",
    options: {
      trustServerCertificate: true,
      encrypt: false,
    },
  };

  try {
    await sql.connect(config);

    const table = new sql.Table("tblLocations");
    table.create = false;
    table.columns.add("TaskId", sql.BigInt);
    table.columns.add("DoorNumber", sql.NVarChar(10));
    table.columns.add("Latitude", sql.Float);
    table.columns.add("Longitude", sql.Float);
    table.columns.add("EmbeddedTime", sql.DateTime);
    table.columns.add("HatKodu", sql.NVarChar(10));
    table.columns.add("GuzergahKodu", sql.NVarChar(50));

    data.forEach((location) => {
      table.rows.add(
        location.taskId,
        location.doorNumber,
        location.Latitude,
        location.longitude,
        location.embeddedTime,
        location.hatKodu,
        location.routeCode
      );
    });

    const request = new sql.Request();
    await request.bulk(table);

    console.log(` ${data.length} Adet Veri Veritabanına Eklendi ...`);
  } catch (err) {
    console.log(`Data uzunlugu :::::::::::::::::   ${data.length}`);
    console.error(err);
  } finally {
  }
}
回答如下:
发布评论

评论列表(0)

  1. 暂无评论