准备工作
确保你的开发环境满足以下要求:
JDK 1.8+
Maven 3.2.x+
ZooKeeper 3.4.x+(作为注册中心)
添加依赖
在Maven项目的`pom.xml`中添加Dubbo和ZooKeeper的依赖:
```xml
dubbo dubbo-dependencies-zookeeper
```
定义服务接口
创建一个Java接口,定义你需要提供的服务方法:
```java
public interface HelloService {
String sayHello(String name);
}
```
实现服务接口
创建一个类来实现这个接口,并添加`@Service`注解以暴露服务:
```java
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
@Service
@Component
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "Hello " + name + ", from Dubbo service!";
}
}
```
配置服务提供者
创建一个主类来启动服务提供者,并使用`DubboBootstrap`进行配置:
```java
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@DubboComponentScan(basePackages = "com.example.provider")
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(ProviderApplication.class, args);
}
}
```
启动服务提供者
运行`ProviderApplication`类,启动服务提供者。服务提供者将向注册中心注册自己的服务。
配置注册中心 (可选):如果你使用ZooKeeper作为注册中心,确保它已经启动并运行在默认端口(2181)。
配置服务消费者
(可选):
创建一个服务消费者项目,并添加对服务提供者的依赖。
在消费者的主类中,使用`@Reference`注解来引用远程服务:
```java
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Component;
@Component
public class ConsumerApplication {
@Reference
private HelloService helloService;
public void sayHelloTo(String name) {
System.out.println(helloService.sayHello(name));
}
}
```
启动服务消费者
运行`ConsumerApplication`类,启动服务消费者。服务消费者将从注册中心获取服务提供者的地址,并调用远程服务。
通过以上步骤,你就可以成功创建和运行一个简单的Dubbo服务了。根据实际需求,你还可以配置监控中心、服务容器等其他组件。