pythonを使用してDubboサービスに接続する
目次前言 Dubbo python clientインストール pythonコード 注意 サービス提供providerの変更 注意 感想 前言
AI部分はpythonで書かれているので、pythonでdubboのサービスを呼び出したいです.
Dubbo python clientインストール
github :https://github.com/apache/dubbo-pythongithubでのインストール方法は、もう紹介しないで、pycharmの中でdubbo-clientを直接検索することができて、インストールの作者はJoe Caoのあの
pythonコードサービスをよく理解していますinterfaceは私たちが呼び出したインタフェースの名前 です. ZookeeperRegistryはzookeeperのアドレス です DubboClientではversionはインタフェースのバージョンであり、groupは呼び出したいインタフェースがあるgroup である.直接コールcompare_providerの具体的な方法 に注意
groupは*がproviderが提供するサービスが見つからないと誤報する形式jsonrpcとして指定できません.つまり、protocol Nameの方式はjsonrpcです.そうしないとpython呼び出しができないときに誤報が見つかりませんが、javaはできますが、以前protocolがdubboの方式だった場合、今はjsonrpcで、javaでの処理が異なる可能性があります.例えば元はオブジェクトだったが、今はjsonかもしれない.
サービス提供providerの変更
私のプロジェクトはダイナミックに提供されているサービスです.つまり、サービスの構成はmysqlから読み込まれ、符号化された方法で提供されています.
ProtocolConfig関連の構成はすべてデータベース内にあるので、ProtocolNameをjsonrpcに設定するだけでいいです
に注意
mavenを追加する必要があります
感想はチューニングできますが、機能不全が多いような気がします.グループに入って直接*に指定するよりは できません. python clientを使用するには、providerはjsonrpc でなければなりません.
AI部分はpythonで書かれているので、pythonでdubboのサービスを呼び出したいです.
Dubbo python clientインストール
github :https://github.com/apache/dubbo-pythongithubでのインストール方法は、もう紹介しないで、pycharmの中でdubbo-clientを直接検索することができて、インストールの作者はJoe Caoのあの
pythonコード
# -*- coding: utf-8 -*-
from dubbo_client import ApplicationConfig, ZookeeperRegistry, DubboClient, DubboClientError
service_interface = 'com.truthso.monitor.service.CompareService'
registry = ZookeeperRegistry('127.0.0.1:2181')
compare_provider = DubboClient(service_interface, registry, version='1.0.0', group='gaopin')
print compare_provider .compare({
u'width': 650,
u'height': 433,
u'phash': u'1011100001101000101100001101110101101100101001010101111001001010',
u'sum': 5429,
u'ave': 5.0,
u'dc': 4331,
u'rSum': 144219,
u'gSum': 142677,
u'bSum': 136723,
u'hash': 4064693128758910538,
}):
groupは*がproviderが提供するサービスが見つからないと誤報する形式jsonrpcとして指定できません.つまり、protocol Nameの方式はjsonrpcです.そうしないとpython呼び出しができないときに誤報が見つかりませんが、javaはできますが、以前protocolがdubboの方式だった場合、今はjsonrpcで、javaでの処理が異なる可能性があります.例えば元はオブジェクトだったが、今はjsonかもしれない.
サービス提供providerの変更
私のプロジェクトはダイナミックに提供されているサービスです.つまり、サービスの構成はmysqlから読み込まれ、符号化された方法で提供されています.
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName(config.getApplicationName());
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress(config.getRegistryAddress());
ProtocolConfig protocol = new ProtocolConfig();
protocol.setName(config.getProtocolName());
protocol.setPort(config.getProtocolPort());
CompareServiceImpl impl = new CompareServiceImpl();
ServiceConfig<CompareService> service = new ServiceConfig<>();
service.setApplication(applicationConfig);
service.setRegistry(registryConfig);
service.setProtocol(protocol);
service.setInterface(CompareService.class);
service.setRef(impl);
service.setVersion(config.getVersion());
service.setGroup(config.getGroup());
service.export();
ProtocolConfig関連の構成はすべてデータベース内にあるので、ProtocolNameをjsonrpcに設定するだけでいいです
に注意
mavenを追加する必要があります
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-rpc-jsonrpcartifactId>
<version>2.7.2version>
dependency>
感想