dubbo+zookeeper

环境准备

下载dubbo

连接:https://github.com/apache/dubbo-admin/
在这里插入图片描述选择master,下载到本地解压得到的项目包含如下目录
在这里插入图片描述进入dubbo目录,打开cmd:
在这里插入图片描述

运行命令mvn clean install可以在dubbo目录下生成一个target目录,如果执行成功,里面会有一个jar包(这一步很可能会失败,可能是是环境的问题,如果始终无法成功,可以直接拿别人的jar包来使用)
链接:https://pan.baidu.com/s/1gUz9Ygt4j0v8xuPwByL1Pg
提取码:f7gh

运行这个jar包,在这里插入图片描述
这一步一般不会失败,能访问 localhost:7001表示成功。账号密码均为root。

下载zookeeper

地址:https://zookeeper.apache.org/
下载到本地解压后目录结构如下:
在这里插入图片描述进入conf目录,复制zoo_sample.cfg改名为zoo.cfg
在这里插入图片描述
进入bin目录,双击运行zkCli.cdm 和 skServer.cmd
在这里插入图片描述
客户端控制台出现显示如下表示客户端服务器连接成功。
在这里插入图片描述
刚刚一共打开了三个黑框控制台,这个是要一直保持运行状态的,第一个黑框是dubbo,其实是运行一个springboot项目,可以将它放在tomcat中或者挂到服务器上,第二个和第三个黑框是zookeeper的,可以将他们设置为开机启动服务,就像mysql服务一样。

编写案例

需要创建两个项目,两个项目导入的依赖相同

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- dubbo -->
		<dependency>
			<groupId>com.alibaba.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>0.2.0</version>
		</dependency>
		<!-- zookeeper -->
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.8</version>
		</dependency>
		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.10</version>
		</dependency>
	</dependencies>

1. 服务提供者
首先开启dubbo功能,在springboot主启动类上加上@EnableDubbo注解。

在springboot的配置property配置文件中配置服务注册信息:

server.port=12345

dubbo.application.name=helloService

dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181

dubbo.scan.base-packages=com.example.demo.Service

编写服务接口和实现类:

接口:

package com.example.Service;

public interface helloService {
    String sayHello();
}

实现类:

package com.example.Service;

import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;


@Component
//需要注意,这里的Service注解是dubbo包下的,而不是spring的
@Service
public class helloServiceImpl implements helloService{
    @Override
    public String sayHello() {
        return "hello";
    }
}

运行程序,访问 http://localhost:7001/
可以看到服务成功注册:
在这里插入图片描述
2. 服务消费者
定义一个接口与下面helloService相同名且相同路径(当然也可以不这么做,后面会讲述第二种方法)。
在这里插入图片描述定义一个服务消费的类,可以是Service也可以是controller等,并将它注册到spring容器中。
这个类是用来调用远程服务的,如下代码所示,我们在类中定义helloService,我们在这个项目中并没有实现这个接口,在服务提供者的项目中才有实现,所以正常情况下我们在这个项目中helloService是不能调用到重写的方法的。此时只需要加上@Reference注解就可以调用别人重写的服务方法了。

@Service
public class consumerService {
    @Reference
    helloService helloService;
    public void getProvider(){
        System.out.println(helloService);
        String hello=helloService.sayHello();
        System.out.println(hello);
        System.out.println(helloService);
    }
}

编写测试:

@SpringBootTest
class ServiceconsumerApplicationTests {
    @Autowired
   consumerService consumerService;
    @Test
    void contextLoads() {
        consumerService.getProvider();
    }
}

运行后结果如下:
在这里插入图片描述
可以知道,消费者项目可以调用到提供者项目提供的方法。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值