feiyuw / dubbo-py Goto Github PK
View Code? Open in Web Editor NEWDubbo(Hessian2) protocol codec and provider/consumer library
License: BSD 2-Clause "Simplified" License
Dubbo(Hessian2) protocol codec and provider/consumer library
License: BSD 2-Clause "Simplified" License
dubbo service 版本必须指定才能调通吗,如果不指定版本是找不到服务的,另外有没有直接调 EchoService 的方法
python 客户端代码
arg = new_object(
'org.apache.dubbo.samples.User',
name='sssssss',
age=10
)
print(arg)
resp = client.send_request_and_return_response(
service_name='org.apache.dubbo.samples.api.GreetingsService',
method_name='sayHiOjb',
args=[arg])
print(resp.ok) # False
print(resp.data) # None
print(resp.error) # division by zero
返回错误信息
WARNING:root:bytes "b'056e6968616f4805647562626f05322e302e325a'" undecoded!
package com.hello.consumer;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.rpc.service.GenericService;
/**
dubbo泛化调用invoker 调用入口
@author mazhenjie
@SInCE 2019/4/26
*/
public class DubboGenericInvoker {
public static void main(String[] args) {
ApplicationConfig application = new ApplicationConfig();
application.setName("api-generic-consumer");
RegistryConfig registry = new RegistryConfig();
registry.setAddress("zookeeper://172.20.30.76:2181");
application.setRegistry(registry);
ReferenceConfig<GenericService> reference = new ReferenceConfig<GenericService>();
// 弱类型接口名
reference.setInterface("calc");
reference.setVersion("1.0.0");
reference.setGroup("dubbo");
// 声明为泛化接口
reference.setGeneric(true);
reference.setApplication(application);
// 用com.alibaba.dubbo.rpc.service.GenericService可以替代所有接口引用
GenericService genericService = reference.get();
Object name = genericService.$invoke("multi2", new String[] {String.class.getName()}, new Object[]{"2"});
System.out.println(name);
}
}
直接进
if not handler:
logging.warning(f'no handler for {msg.service_name}.{msg.method_name}')
continue
针对这个如何修改???在线等
1.Dubbo-py 注册到zk后 的服务接口可以用java调用 么?
2.测试例子注册到DUBBOADMIN中 关闭程序 怎么注册的服务接口不消失
<dubbo:registry protocol="zookeeper" address="${redis.dubboAddress}" group="${qianbao.global.env}" />
问题1.是否支持zk 连接?
问题2. 有dubbo 分组时 这个组名怎么传?
对比了一下,开发说需要加group,就在server中增加了group,timeout
同时在url = f'dubbo://{self._host}:{self._port}/{service}?anyhost=true增加了{self._app}/
但是增加了后调用依然有问题,我是通过jmeter调用的,麻烦大神帮忙看看是怎么回事,谢谢
url = f'dubbo://{self._host}:{self._port}/{self._app}/{service}?anyhost=true
class DubboService(object):
''' Dubbo service class, provide dubbo service:
1. register
2. handler
'''
def init(self, port, app, group="open-platform",timeout=30000,owner="member",dubbo_version='2.5.3'):
self._host = get_pub_ip()
self._port = port
self._app = app
self._dubbo_version = dubbo_version
self._services = {} # {'service-1': {method1: handler-1, method2: handler-2}}
self._server = _ServerThread(_DubboServer(('0.0.0.0', self._port), _get_dubbo_request_handler(self._services)))
#by Richard
self._group = group
self._timout = timeout
# self._generic = generic
self._owner = owner
def register(self, zk, version='1.0.0', revision='1.0.0'):
client = KazooClient(zk)
client.start()
for service, methods in self._services.items():
logging.info(f'register service "{service}", methods "{methods}" to zookeeper "{zk}"')
# url = f'dubbo://{self._host}:{self._port}/{service}?anyhost=true&application={self._app}&dubbo={self._dubbo_version}&interface={service}&methods={",".join(methods)}&pid={next(_pid_gen)}&revision={revision}&side=provider×tamp={get_timestamp()}&version={version}'
url = f'dubbo://{self._host}:{self._port}/{self._app}/{service}?anyhost=true&application={self._app}&default.timeout={self._timout}&dubbo={self._dubbo_version}&generic=false&group={self._group}&interface={service}&methods={",".join(methods)}&owner={self._owner}&pid={next(_pid_gen)}&revision={revision}&side=provider×tamp={get_timestamp()}&version={version}'
print(url)
client.ensure_path(f'/dubbo/{service}/providers/{quote_plus(url)}')
print(f'/dubbo/{service}/providers/{quote_plus(url)}')
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.