当前位置: 首页 > news >正文

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文件中引入相关依赖。

<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):

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):

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服务。

服务接口:

package com.example;

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

服务实现:

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;
    }
}

服务消费者逻辑:

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

服务提供者启动类:

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);
    }
}

服务消费者启动类:

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):

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):

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

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

相关文章:

  • 【减小图片打包体积】image-webpack-loader
  • MySQL--数据备份
  • 实时数据流处理利器:Apache Storm 在大数据中的应用
  • .Net中对称加密的实现
  • cJSON类型及type值详解
  • ECharts系列: Vue 中使用 ECharts 折线图时,怎么配置来实现默认隐藏某些图例,并在用户点击图例时显示或隐藏对应的数据系列
  • MySQL的事务
  • Springboot3.x集成Spring Batch 5.2.1
  • 面试经典150题·LeetCode26·删除有序数组中的重复项·Java
  • 18.redis基本操作
  • 内积相似系数——内积度量相似系数
  • html 列表循环滚动,动态初始化字段数据
  • Android 隐藏手势模式下输入法的BackButton和ImeSwitchButton
  • Vue项目中Vuex在util引入,断点存在default
  • EI复现:蜣螂优化算法变体合集上新,改进正弦算法引导的蜣螂优化算法
  • ts中 构造器
  • 23种设计模式-结构型模式-桥接器
  • 【CF】Day20——Codeforces Round 969 (Div. 2) C
  • STM32 CAN学习(一)
  • linux-- 0. C语言过、Java半静对、Python纯动和C++对+C
  • 青岛网站建设/新闻 最新消息
  • 有没有做网站的公司/小说网站排名人气
  • 怎么做视频还有网站/郑州seo关键词优化公司
  • 类似于拼多多的网站怎么做/seo软文代写
  • 做网站公司名字应该用图片吗/我想做app推广代理
  • 仿业务网站源码/sem培训学校