更新時(shí)間:2021-06-11 15:29:17 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1095次
用dubbo做一個(gè)“hello world”。
此次demo十分簡(jiǎn)單,旨在對(duì)Dubbo有個(gè)整體上的初步了解。服務(wù)提供者(程序)和服務(wù)消費(fèi)者(程序)雖然都是運(yùn)行在同個(gè)服務(wù)器上(本地tomcat),但是調(diào)用是通過(guò)Dubbo的RPC。
注冊(cè)中心是redis,部署在本地虛擬機(jī),地址為192.168.1.66:6379(在配置文件中需要用到)。最終達(dá)到效果是服務(wù)消費(fèi)者(Consumer)調(diào)用服務(wù)提供者(Provider)的sayHello()方法在控制臺(tái)輸出“Hello world”。
需要做的事情:
pom.xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.2.0</version>
</dependency>
服務(wù)接口DemoService
public interface DemoService {
String sayHello(String str);
}
服務(wù)接口實(shí)現(xiàn)DemoService
public class DemoServiceImpl implements DemoService {
public String sayHello(String str) {
return "Hello " + str;
}
}
consumer.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="demo-consumer"/>
<dubbo:registry protocol="redis" address="192.168.1.66:6379" check="true"/>
<dubbo:consumer timeout="5000" retries="2"
group="snowman"
version="1.0.0"/>
<dubbo:reference
timeout="3000" retries="1"
id="demoService"
version="*"
interface="com.snowman.service.DemoService"/>
</beans>
provider.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<dubbo:application name="demo-provider"/>
<dubbo:registry protocol="redis" address="192.168.1.66:6379" check="true"/>
<dubbo:protocol name="dubbo" port="20880"/>
<dubbo:provider group="snowman"
threadpool="fixed"
threads="500"
timeout="5000"
retries="2"
/>
<dubbo:service interface="com.snowman.service.DemoService"
timeout="5000"
retries="1"
version="3.0.0"
ref="demoService">
<dubbo:method name="sayHello" timeout="2000"/>
</dubbo:service>
<bean id="demoService" class="com.snowman.service.DemoServiceImpl"/>
</beans>
服務(wù)提供者Provider
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"config/spring-dubbo-redis-provider.xml");
context.start();
System.out.println("dubbo redis 服務(wù)啟動(dòng)成功 ");
System.in.read();
}
}
項(xiàng)目工程結(jié)構(gòu)
先啟動(dòng)redis,因?yàn)樗亲?cè)中心(在兩個(gè)xml都配置了redis的地址),沒起來(lái)會(huì)報(bào)錯(cuò),也沒辦法通知Consumer調(diào)用。
運(yùn)行Provider,可以在控制臺(tái)看到輸出“dubbo redis 服務(wù)啟動(dòng)成功 ”
再運(yùn)行Consumer,可以在控制臺(tái)看到輸出“Hello world ”,遠(yuǎn)程調(diào)用Provider的服務(wù)成功。
再去看redis,可以看到Provider和Consumer都把相關(guān)信息發(fā)送到注冊(cè)中心
(RedisDesktopManager,一個(gè)redis可視化工具)
流程簡(jiǎn)述:
(調(diào)用過(guò)程跟注冊(cè)中心沒半毛錢關(guān)系,信息是從緩存取得,取得注冊(cè)中心的信息后,就算注冊(cè)中心掛掉可以正常調(diào)用)
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"學(xué)IT什么培訓(xùn)學(xué)校好",希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743