Dubbo(25)如何配置Dubbo的协议和端口?

配置Dubbo的协议和端口是设置分布式服务通信的基础步骤。Dubbo支持多种协议(如Dubbo、RMI、HTTP等),你可以根据需求选择合适的协议并配置相应的端口。下面以一个完整的Spring Boot项目为例,详细介绍如何配置Dubbo的协议和端口。

配置步骤

  1. 引入依赖:在项目中引入Dubbo和注册中心(如ZooKeeper)的相关依赖。
  2. 配置注册中心和Dubbo协议:在Dubbo的配置文件中配置注册中心和协议的相关属性。
  3. 定义服务接口和实现 :定义一个服务接口和其实现,并通过@DubboService注解将其暴露为Dubbo服务。
  4. 启动服务提供者和消费者:编写启动类,启动Spring Boot应用。

详细代码示例

1. 引入依赖

在Maven项目中,需要在pom.xml文件中引入相关依赖。

xml 复制代码
<dependencies>
    <!-- Dubbo dependencies -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.7.8</version>
    </dependency>

    <!-- ZooKeeper dependencies -->
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>4.2.0</version>
    </dependency>

    <!-- Spring Boot dependencies -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

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

2. 配置注册中心和Dubbo协议

在Spring Boot项目中,可以通过application.yml文件来配置Dubbo的注册中心和协议的相关属性。

服务提供者的配置文件(application.yml):

yaml 复制代码
server:
  port: 8081

dubbo:
  application:
    name: dubbo-demo-provider
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    name: dubbo
    port: 20880
  scan:
    base-packages: com.example

服务消费者的配置文件(application.yml):

yaml 复制代码
server:
  port: 8080

dubbo:
  application:
    name: dubbo-demo-consumer
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    name: dubbo
  scan:
    base-packages: com.example

3. 定义服务接口和实现

定义一个服务接口和其实现,并通过@DubboService注解将其暴露为Dubbo服务。

服务接口:

java 复制代码
package com.example;

public interface DemoService {
    String sayHello(String name);
}

服务实现:

java 复制代码
package com.example;

import org.apache.dubbo.config.annotation.DubboService;

@DubboService
public class DemoServiceImpl implements DemoService {
    @Override
    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

服务消费者逻辑:

java 复制代码
package com.example;

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component;

@Component
public class DemoServiceConsumer {

    @DubboReference
    private DemoService demoService;

    public void execute() {
        String result = demoService.sayHello("World");
        System.out.println(result);
    }
}

4. 编写启动类

编写启动类,启动Spring Boot应用。

服务提供者启动类:

java 复制代码
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DubboProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboProviderApplication.class, args);
    }
}

服务消费者启动类:

java 复制代码
package com.example;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class DubboConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboConsumerApplication.class, args);
    }

    @Bean
    public CommandLineRunner demo(DemoServiceConsumer consumer) {
        return args -> consumer.execute();
    }
}

运行示例

  1. 启动ZooKeeper :确保ZooKeeper注册中心在本地或远程服务器上运行,并且地址为127.0.0.1:2181
  2. 启动服务提供者 :运行DubboProviderApplication类,启动Spring Boot应用,确保服务成功注册到ZooKeeper。
  3. 启动服务消费者 :运行DubboConsumerApplication类,启动Spring Boot应用。

在消费者的控制台中,你会看到服务调用的结果:

复制代码
Hello, World

配置其他协议(如HTTP)

如果你想使用其他协议,如HTTP,可以在application.yml文件中进行相应的配置。

服务提供者的配置文件(application.yml):

yaml 复制代码
server:
  port: 8081

dubbo:
  application:
    name: dubbo-demo-provider
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    name: http
    port: 8082
  scan:
    base-packages: com.example

服务消费者的配置文件(application.yml):

yaml 复制代码
server:
  port: 8080

dubbo:
  application:
    name: dubbo-demo-consumer
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    name: http
  scan:
    base-packages: com.example

总结

通过上述步骤,我们可以看到如何配置Dubbo的协议和端口:

  1. 引入依赖:在项目中引入Dubbo和注册中心(如ZooKeeper)的相关依赖。
  2. 配置注册中心和Dubbo协议 :在application.yml文件中配置注册中心的地址和协议的相关属性。
  3. 定义服务接口和实现 :通过@DubboService注解将服务实现类暴露为Dubbo服务。
  4. 启动服务提供者和消费者:编写启动类,启动Spring Boot应用。

通过这些配置,服务提供者和消费者能够使用指定的协议和端口进行通信,实现分布式服务架构。

相关推荐
bearpping28 分钟前
SpringBoot最佳实践之 - 使用AOP记录操作日志
java·spring boot·后端
一叶飘零_sweeeet30 分钟前
线上故障零扩散:全链路监控、智能告警与应急响应 SOP 完整落地指南
java·后端·spring
开心就好20252 小时前
不同阶段的 iOS 应用混淆工具怎么组合使用,源码混淆、IPA混淆
后端·ios
架构师沉默2 小时前
程序员如何避免猝死?
java·后端·架构
椰奶燕麦2 小时前
Windows PackageManager (winget) 核心故障排错与通用修复指南
后端
zjjsctcdl2 小时前
springBoot发布https服务及调用
spring boot·后端·https
zdl6863 小时前
Spring Boot文件上传
java·spring boot·后端
世界哪有真情3 小时前
哇!绝了!原来这么简单!我的 Java 项目代码终于被 “拯救” 了!
java·后端
RMB Player3 小时前
Spring Boot 集成飞书推送超详细教程:文本消息、签名校验、封装工具类一篇搞定
java·网络·spring boot·后端·spring·飞书
重庆小透明3 小时前
【搞定面试之mysql】第三篇 mysql的锁
java·后端·mysql·面试·职场和发展