前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nodejs注册到Eureka注册中心

Nodejs注册到Eureka注册中心

作者头像
码客说
发布2022-12-05 15:56:22
2.6K0
发布2022-12-05 15:56:22
举报
文章被收录于专栏:码客

正文

初始化

代码语言:javascript
复制
npm init

注册中心注册

Eureka注册中心默认是30s检测一下服务是否可用。

https://github.com/arthas001/eureka-node-client

安装eureka-node-client

代码语言:javascript
复制
npm install eureka-node-client --save

注册服务

register.js

代码语言:javascript
复制
let Eureka = require('eureka-node-client');
let hostname = "127.0.0.1";
let port = 3000;

let eureka_address = process.env.EUREKA_ADDRESS || '110.110.110.110';
let eureka_port = process.env.EUREKA_PORT || '8302';
let eureka_username = process.env.EUREKA_USERNAME || 'admin';
let eureka_password = process.env.EUREKA_PWD || 'admin';
const eureka_client = new Eureka({
  eureka: {
    host: `${eureka_username}:${eureka_password}@${eureka_address}`,
    port: eureka_port,
    servicePath: "/eureka/apps/"
  },
  instance: {
    app: "sliverecord",
    port: {'$': port, '@enabled': 'true'},
    homePageUrl: `http://${hostname}:${port}/`,
    healthCheckUrl: `http://${hostname}:${port}/health`,
    statusPageUrl: `http://${hostname}:${port}/health`,
    metadata: {
      zone: 'primary',
      env: process.env.NODE_ENV,
      version: "1.0"
    }
  }
});

/**
 * 设置日志级别
 */
eureka_client.logger.level('debug');

//********************  测试监听  ********************//
let updatedListener = function (apps) {
  console.log("更新:" + JSON.stringify(apps));
}
eureka_client.onUpdated(updatedListener);
eureka_client.start(function (error) {
  console.log(error || '启动成功!');
});

其中

  • eureka 这是注册中心的地址 如果注册中心不需要账号密码直接写上也不影响。
  • instance 这是服务的地址

注册地址简写,关闭时注销注册

代码语言:javascript
复制
let Eureka = require('eureka-node-client');
let hostname = "127.0.0.1";
let port = 3000;

const eureka_client = new Eureka({
  eureka: {
    "serviceUrls": {
      "default": [
        "http://admin:admin@49.4.26.249:8302/eureka/apps/",
      ]
    }
  },
  instance: {
    app: "sliverecord",
    port: {'$': port, '@enabled': 'true'},
    homePageUrl: `http://${hostname}:${port}/`,
    healthCheckUrl: `http://${hostname}:${port}/health`,
    statusPageUrl: `http://${hostname}:${port}/health`,
  }
});

/**
 * 设置日志级别
 */
eureka_client.logger.level('debug');

//********************  测试监听  ********************//
let updatedListener = function (apps) {
  console.log("更新:" + JSON.stringify(apps));
}
eureka_client.onUpdated(updatedListener);
eureka_client.start(function (error) {
  console.log(error || '启动成功!');
});

process.on('SIGINT', function() {
  eureka_client.stop();
  setTimeout(()=>{process.exit();},300)
});

注意

程序退出要延迟执行,否则取消注册不成功。

服务

安装express

代码语言:javascript
复制
npm install express --save

使用express挂起服务

代码语言:javascript
复制
const express = require('express');
const app = express();
app.get('/health', (req, res) => {
  res.json({
    status: 'UP'
  });
});
app.get('/', (req, res, next) => {
  res.json({code: 0, msg: "success!"});
});
app.listen(3000);

测试Eureka服务

启动服务的时候启动注册服务

代码语言:javascript
复制
const express = require('express');
const app = express();
app.get('/health', (req, res) => {
  res.json({
    status: 'UP'
  });
});
app.get('/', (req, res, next) => {
  res.json({code: 0, msg: "success!"});
});
app.listen(3000);

const { spawn } = require('child_process');
const grep = spawn('node', ['register.js']);

grep.on('close', (code, signal) => {
  console.log(`子进程终止`);
  process.exit();
});

在收到SIGINT信号后,会先结束子进程,所以我们可以监听子进程的关闭事件再关闭主进程

代码语言:javascript
复制
grep.on('close', (code, signal) => {
  console.log(`子进程终止`);
  process.exit();
});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
  • 注册中心注册
  • 服务
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档