-
Notifications
You must be signed in to change notification settings - Fork 161
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
初始化多个dubbo,始终只使用一个客户端 #46
Comments
您好,@SmartKarven 你的多个zk里面注册的服务是一样的吗?如果一样,zk可以支持多集群的,我们的registry参数也是支持的 {registry: '127.0.0.1:2182,127.0.0.1:2181'} 2.x的版本中,我们更好的设计了service的参数的封装,可以带来更棒的代码提示(如果你用typescript的话) 参考example中的demo |
是不是只能连接一个zk(集群),{registry: '127.0.0.1:2182,127.0.0.1:2181'}填写了两个不同的zk(集群),发现每次都只初始化连接其中一个 |
如果是两个zk集群确实要初始化两个dubbo对象 |
可以DBEUG=dubbo* 启动node进程 可以看到完整的dubbo的启动初始化的log,我也试下。按道理不应该出现就初始化一次。 |
初始化两个dubbo对象,只能正常调用最后初始化的dubbo的服务。调用第一个初始化的dubbo会报一下的错误: |
@SmartKarven 非常感谢这么详细的log detail,我来定位fixed下。 |
我本地测试了下,可以调通,如上log, |
你连接的zk是同一个,你可以两个不同的zk试试 |
@SmartKarven 好的, 感谢你,我想明白了,queue.ts不该是单例,应该在scheduler.ts的构造函数里初始化,如果是单例导致queue中的subscriber被最后一个dubbo初始化绑定,导致在两个不同的zk中,调用差异化接口失败。我来fixed。 |
@SmartKarven dubbo2.js@2.2.4 |
|
你好:
我现在需要初始化多个dubbo 但是初始化或后始终调用的是一个zk上的服务。
如下为编写的代码。
如果我想通过监听事件动态调用,注册在不同zk上的服务,会出现调用不到我想要的调用的服务。
`const {Dubbo, java, TDubboCallResult} = require('dubbo2.js');
const {dubboInvoke,invoker} = require('dubbo-invoker');
const app = require('http');
var url = require('url');
var events = require('events');
var emitor = new events.EventEmitter();
var opt = [{
application: {name: 'dubbo-node-consumerA'},
register: '127.0.0.1:2182',
dubboVersion: '2.0.10',
interfaces: ['com.sitech.hsf.Interface.ServerA'],
},{
application: {name: 'dubbo-node-consumerB'},
register: '127.0.0.1:2181',
dubboVersion: '2.0.10',
interfaces: ['com.sitech.hsf.Interface.ServerA'],
}];
var proxy = {
dubboInterface: 'com.sitech.hsf.Interface.ServerA',
version: '2.0.0',
timeout:10,
group:'',
methods: {
sayHello(name) {
return [java.String(name)];
},
},
};
var dubbo = new Dubbo(opt[0]);
var dubbo1 = new Dubbo(opt[1]);
var proxyProvider = dubbo.proxyService(proxy);
var proxyProvider1 = dubbo1.proxyService(proxy);
//始终调用到dubbo1注册的zk的服务。
emitor.on('input',function (res,pid){
var result = async (id) => {
var result = await proxyProvider'sayHello';
var result1 = await proxyProvider1'sayHello';
console.log('result',result);
console.log('result',result1);
return result;
};
result(pid).then((data) => {res.end(result1.res);} );
});
app.createServer(function(req, res) {
const path = url.parse(req.url).pathname;
var params = url.parse(req.url,true).query;
if(path == '/dubbo'){
emitor.emit('input',res,params.id);
}
}).listen(9090);`
The text was updated successfully, but these errors were encountered: