dubbo与springboot的集成
?
1.添加dubbo-spring-boot-starter依賴
<!-- dubbo依賴 --><dependency><groupId>com.alibaba.spring.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.0.0</version></dependency>2.添加zookeeper依賴
<dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.6</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency>3.添加zkclient依賴
<dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency>4.新建個普通的java工程,用來定義服務(API接口),如下:
package com.example.dubboTestApi.api;public interface SayHelloApi {String say(String name); }5.新建一個springboot類型的服務實現工程,具體見springboot創建功能文章
6.配置文件修改:
#WEB服務端口 server.port=8081## dubbo 配置 spring.dubbo.application.id=live-dubbo-provider spring.dubbo.application.name=live-dubbo-provider spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.server=true spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=208807.啟動類修改,增加@EnableDubboConfiguration注解
@EnableDubboConfiguration @SpringBootApplication public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);} }8.服務實現,先添加API接口依賴
<dependency><groupId>com.example.dubboTestApi</groupId><artifactId>dubboTestApi</artifactId><version>0.0.1-SNAPSHOT</version></dependency>?注意這里加了一個retries = 0,默認情況下超時時dubbo會自動重掉三次,這樣的重復調用很容易導致一些問題,所以這里用retries = 0來關閉超時重試功能。
@Service(interfaceClass = SayHelloApi.class,retries = 0) @Component public class SayHelloApiService implements SayHelloApi{@Overridepublic String say(String name) {if(StringUtils.isBlank(name)){return "error,name is blank";}return name + ",hello dubbo api";}}9.新建一個springboot類型的服務調用工程,具體見springboot創建功能文章
10.添加dubbo,zookeeper,zkclient相關依賴。
11.配置文件修改
## WEB服務端口 server.port=8082## Dubbo 配置 spring.dubbo.application.name=live-dubbo-consumer spring.dubbo.application.id=live-dubbo-consumer spring.dubbo.protocol.port=20800 spring.dubbo.protocol.name=dubbo spring.dubbo.registry.address=zookeeper://127.0.0.1:218112.修改啟類:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;@EnableDubboConfiguration @SpringBootApplication public class DubboConsumerTestApplication {public static void main(String[] args) {SpringApplication.run(DubboConsumerTestApplication.class, args);} }?
13.添加api接口依賴
<dependency><groupId>com.example.dubboTestApi</groupId><artifactId>dubboTestApi</artifactId><version>0.0.1-SNAPSHOT</version></dependency>14.創建使用api例子
?
import org.springframework.stereotype.Component; import com.alibaba.dubbo.config.annotation.Reference; import com.example.dubboTestApi.api.SayHelloApi;@Component public class DubboConsumerTest {@Referenceprivate SayHelloApi sayHelloApi;public String testSay(){System.out.println(sayHelloApi.say("dubbo"));return "dubbo test success";}}15.另外,為了便于理解,上面分成三個項目,API定義,服務提供,服務消費 。但是一個應用,既可以提供服務,也可以調用其他項目提供的服務。,一般也是這樣的情況。
16.注意事項
默認情況下,服務端沒啟動,消費端是不能啟動的。可以配置一下讓消費端啟動的時候不去檢查服務是否存在。
spring.dubbo.reference.check=false另外,dubbo默認超時會重試兩次,這樣的重試有時會產生很大問題,所以建議關閉。關閉有兩種方式:
在服務上加注解:
@Service(interfaceClass = AccountUpdateApi.class,retries = -1) 注意這里重試次數寫成-1,經測試,dubbo版本(2.6.0)寫成0無效。另一種方式,配置文件:
spring.dubbo.provider.retries=-1?
17.安裝dubbo admin后(安裝非常簡單,直接將war包放在tomcat下運行即可),可以在頁面查看服務情況
?
?
?
需要項目代碼,可以發郵件zhuyuehua110@163.com
轉載于:https://www.cnblogs.com/zhuyuehua/p/9405495.html
總結
以上是生活随笔為你收集整理的dubbo与springboot的集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 愤怒的小鸟(爆搜,剪枝)
- 下一篇: MyBatis传入多个参数的问题