gpt4 book ai didi

node.js - Spring Cloud Netflix Eureka 找不到 eureka-js 实例

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:59 25 4
gpt4 key购买 nike

我在 Spring 中有 3 个微服务:

  • Netflix Eureka
  • 制片人
  • 消费者

另一个使用 Eureka-js-client 用 NodeJs 编写的微服务

  • Node 微服务

Spring Eureka 仪表板列出了所有这些 instances

到目前为止,一切看起来都正常,但问题是当我尝试读取 eureka 服务器中的 node-microservice 实例时。虽然我通过这种方式成功找到了员工生产者实例

List<ServiceInstance> instances=discoveryClient.getInstances("employee-producer");
ServiceInstance serviceInstance=instances.get(0);

我无法找到我的 Node 微服务

List<ServiceInstance> instances=discoveryClient.getInstances("node-microservice");
ServiceInstance serviceInstance=instances.get(0);

调试结果为node-microservice not found

Node 微服务

const Eureka = require('eureka-js-client').Eureka;
const express = require('express');
const server = express();
server.use(express.json());
server.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
server.listen(3001);
server.get('/', function (req, res) {
res.send("CIaooo");
});



// example configuration
const client = new Eureka({
// application instance information
instance: {
app: 'node-microservice',
hostName: 'localhost',
ipAddr: '127.0.0.1',
port: {
'$': 3001,
'@enabled': 'true',
},
vipAddress: 'jq.test.something.com',
statusPageUrl: 'http://localhost:3001/info',
dataCenterInfo: {
'@class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo',
name: 'MyOwn',
}
},
eureka: {
// eureka server host / port
host: 'localhost',
port: 8761,
servicePath: '/eureka/apps/'
},
});

client.logger.level('debug');

client.start(function(error){
console.log(error || 'complete')});

另一个奇怪的事情是,从 spring debug 我可以列出服务,其中还列出了 Node 微服务

enter image description here

我的代码有什么问题吗?

最佳答案

问题是在实例对象中我没有写instanceId(没有在任何地方提到)。我发现这个解决方案正在抓取代码,并且在另一个项目中也有这个字段

instance: {
app: 'node-microservice',
instanceId: 'nodemicroservice',
hostName: 'localhost',
ipAddr: '127.0.0.1',
port: {
'$': 3001,
'@enabled': 'true',
},
vipAddress: 'nodemicroservice',
statusPageUrl: 'http://localhost:3001/info',
dataCenterInfo: {
'@class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo',
name: 'MyOwn',
},
registerWithEureka: true,
fetchRegistry: true
},

关于node.js - Spring Cloud Netflix Eureka 找不到 eureka-js 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50965591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com