踩了太多坑,官網中文參考地址:http://dubbo.apache.org/zh-cn/index.html
話不多說,直接懟代碼
dubbo 2.7.x 的 boot starter寫法如下
依賴:
<dubbo.version>2.7.1</dubbo.version>
<!-- —————————————————— dubbo-starter BEGIN —————————————————————————— -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
</dependency>
<!-- —————————————————— dubbo-starter END —————————————————————————— -->
服務privider:
---------------------- provider ----------------------
provider-yaml:
dubbo:
# registry: # 單註冊中心,注意屬性級別:dubbo.registry,如果有@Service(registry = {"registry1","registry2","registry3"}),則刪除
# register: false # true(默認), false:表示服務不註冊到註冊中心(只訂閱,直連服務正常),且dubbo-admin不顯示
# address: zookeeper://127.0.0.1:2181
registries: # 多註冊中心,注意屬性級別:dubbo.registries, 不同的方法可以用@Service(registry = {"registry2"}),指定不同的註冊中心
provider1:
register: true #默認,false:表示服務不註冊到註冊中心
address: zookeeper://a.a.a.a:2181
provider2:
address: zookeeper://b.b.b.b:2181
provider3:
address: zookeeper://c.c.c.c:2181
application:
name: myProvider
# qos-enable: true # 默認值 true, 是否允許在線運維, 配置和查詢服務
# qos-port: 22222 # 默認值2222
# qos-accept-foreign-ip: false # 默認false , 不允許遠程訪問 telnet
scan:
base-packages: com.cmb.service.dubbo
protocol:
name: dubbo
port: 28080
provider:
retries: 0 # 服務提供者無需重試
timeout: 6000 # 默認只有1s
provider-bean:
bean1註解:
@Service(group = "project1", version = "1.0.0", registry = {"provider1", "provider3"}
public class DubboPrintServiceImpl implements DubboPrintService{...}
bean2註解:
@Service(group = "project2", version = "2.0.0", registry = {"provider3"})
public class DubboPrintService2Impl implements DubboPrintService{...}
---------------------- provider ----------------------
消費者 comsumer:
---------------------- consumer ----------------------
consumer-yaml:
dubbo:
# registry: # 單註冊中心,注意屬性級別:dubbo.registry
# register: false # true(默認), false:表示服務不註冊到註冊中心(只訂閱,直連服務正常),且dubbo-admin不顯示
# address: zookeeper://127.0.0.1:2181
registries: # 多註冊中心
consumer1:
register: true #默認,false:表示服務不註冊到註冊中心
address: zookeeper://a.a.a.a:2181
consumer2:
address: zookeeper://b.b.b.b:2181
consumer3:
address: zookeeper://c.c.c.c:2181
application:
name: myConsumer
scan:
base-packages: com.cmb.controller
consumer:
timeout: 3000
check: true # 服務啓動時候檢查是否可用
retries: 2 # 服務重試次數
consumer-bean:
下面的Bean注入後,直接使用
@Reference(group = "project1", version = "1.0.0", registry = {"consumer1", "consumer3"})
private DubboPrintService printService1;
@Reference(group = "project2", version = "2.0.0", registry = {"consumer2"})
private DubboPrintService printService2;
---------------------- consumer ----------------------