目錄
- 前言
- Dubbo python client 安裝
- python 代碼
- 注意
- 服務(wù)提供provider的改變
- 注意
- 感想
前言
嘗試更熟練的使用macdown,因?yàn)锳I部分是用python寫的,所以想在 python 中調(diào)用dubbo的服務(wù)。
Dubbo python client 安裝
github :https://github.com/apache/dubbo-python
github中安裝方法,就不再介紹,也可以直接在 pycharm 里面搜索 dubbo-client,安裝 作者是Joe Cao的那個(gè)
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
,
}
)
:
- 很好理解 service_interface 是我們調(diào)用的接口的名稱
- ZookeeperRegistry 是 zookeeper 的地址
- DubboClient 中 version 是接口的版本,group 是想要調(diào)用的接口所在的group
- 直接調(diào)用 compare_provider 的具體某一個(gè)方法
注意
group 無法指定為 * 會(huì)報(bào)錯(cuò)說找不到
provider 提供的服務(wù)的形式 jsonrpc 也就是,protocol Name 的方式是 jsonrpc 不然無法python調(diào)用的時(shí)候會(huì)報(bào)錯(cuò)找不到,但是java可以
但是 如果以前是 protocol 是 dubbo 的方式,現(xiàn)在是 jsonrpc ,可能在java中的處理會(huì)有不同,比如返回的原來是對(duì)象,現(xiàn)在可能是個(gè)json
服務(wù)提供provider的改變
因?yàn)槲业捻?xiàng)目是動(dòng)態(tài)提供的服務(wù),也就是服務(wù)的配置是從 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 相關(guān)的配置都是在數(shù)據(jù)庫里面所以,只需要把ProtocolName設(shè)置為 jsonrpc 就行
注意
需要添加 maven
<
dependency
>
<
groupId
>
org.apache.dubbo
groupId
>
<
artifactId
>
dubbo-rpc-jsonrpc
artifactId
>
<
version
>
2.7.2
version
>
dependency
>
感想
- 雖然能調(diào)通,但是感覺很多功能不全,比入group直接指定為 * 就不行
- 如果想用 python client ,provider 必須是 jsonrpc
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
