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应用。

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

相关推荐
草捏子40 分钟前
最终一致性避坑指南:小白也能看懂的分布式系统生存法则
后端
一个public的class1 小时前
什么是 Java 泛型
java·开发语言·后端
头孢头孢2 小时前
k8s常用总结
运维·后端·k8s
TheITSea3 小时前
后端开发 SpringBoot 工程模板
spring boot·后端
Asthenia04123 小时前
编译原理中的词法分析器:从文本到符号的桥梁
后端
Asthenia04123 小时前
用RocketMQ和MyBatis实现下单-减库存-扣钱的事务一致性
后端
Pasregret3 小时前
04-深入解析 Spring 事务管理原理及源码
java·数据库·后端·spring·oracle
Micro麦可乐3 小时前
最新Spring Security实战教程(七)方法级安全控制@PreAuthorize注解的灵活运用
java·spring boot·后端·spring·intellij-idea·spring security
returnShitBoy3 小时前
Go语言中的defer关键字有什么作用?
开发语言·后端·golang
Asthenia04123 小时前
面试场景题:基于Redisson、RocketMQ和MyBatis的定时短信发送实现
后端