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

springCloudAlibaba集成Dubbo

文章目录

  • 简介
      • 1、父工程
      • 2、接口模块
      • 3、生产者
      • 4、消费者
      • 5、启动

简介

使用springboot版本 : 2.2.5
cloud版本 :2.2.1.RELEASE

1、父工程

创建一个 名为springCloudAlibaba-dubbo父工程,pom.xml默认就好,然后除了pom.xml文件之外全都删掉,

2、接口模块

先创建一个子模块,继承父工程

<parent><artifactId>springCloudAlibaba-dubbo</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version>
</parent>

然后添加一个接口

接口代码如下:

public interface HelloService {String hello(String name);
}

3、生产者

pom.xml文件继承父工程

<parent><artifactId>springCloudAlibaba-dubbo</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version>
</parent>

pom.xml文件添加以下依赖

<!--引入公共模块--><dependency><groupId>org.example</groupId><artifactId>common</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.1.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.2.5.RELEASE</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.2.1.RELEASE</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId><version>2.2.1.RELEASE</version></dependency><!--Dubbo Spring Cloud基于Spring Cloud Commons开发的,org.apache.http.client.HttpClient类确实存在于旧版本的httpclient中,但是它使用内部的org.apache.http.impl.client.HttpClientBuilder类在新版本中却不存在--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.4</version><scope>compile</scope></dependency>

application.yml 配置文件

com:nacos_address: 10.114.57.125:8848
spring:application:name: dubbo-productcloud:nacos:discovery:server-addr: ${com.nacos_address}  # nacos服务注册中心的地址cluster-name: consumer-cluster  #集群名称namespace: b7ef9579-df75-41c2-8a95-e04aa03c273a  #命名空间config:server-addr: ${com.nacos_address}  # nacos配置中心地址namespace: b7ef9579-df75-41c2-8a95-e04aa03c273afile-extension: yaml  #配置文件的后缀名refresh-enabled: true  #默认true:自动刷新
dubbo:scan:base-packages: org.example.service # 扫描带有 org.apache.dubbo.config.annotation.@Service 注解的实现类protocol: #Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称,port 为协议端口( -1 表示自增端口,从 20880 开始)name: dubboport: -1  #dubbo协议缺省端口为20880,rmi协议缺省端口为1099,http和hessian协议缺省端口为80;如果没有配置port,则自动采用默认端口,如果配置为-1,则会分配一个没有被占用的端口。Dubbo 2.4.0+,分配的端口在协议缺省端口的基础上增长,确保端口段可控registry:#dubbo服务注册端口,注册中心服务器地址,如果地址没有端口缺省为9090,同一集群内的多个地址用逗号分隔,如:ip:port,ip:port#其中前缀spring-cloud说明:挂载到 Spring Cloud注册中心address: spring-cloud://10.114.57.125:8848#check: false  #关闭注册中心是否启动的相关检查,false表示不检查注册中心是否启动,就不会报错cloud:subscribed-services: dubbo-productconsumer:check: false  #关闭订阅服务是否启动的检查【检查时,没有服务提供者会报错】

启动类 DubboServerApplication.java

package org.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient //【此注解可以省略】
@SpringBootApplication
public class DubboServerApplication {public static void main(String[] args) {SpringApplication.run(DubboServerApplication.class, args);}
}

实现类 HelloServiceImpl.java

package org.example.service;
import org.apache.dubbo.config.annotation.Service;
@Service(version = "1.0.0")
public class HelloServiceImpl implements HelloService {@Overridepublic String hello(String name) {String s = "hello " + name;System.out.println("调用了:"+s);return s;}
}

生产者模块目录全览

4、消费者

pom.xml文件继承父工程

<parent><artifactId>springCloudAlibaba-dubbo</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version>
</parent>

pom.xml加入以下依赖

    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.example</groupId><artifactId>common</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.1.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.2.5.RELEASE</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.2.1.RELEASE</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId><version>2.2.1.RELEASE</version></dependency><!--Dubbo Spring Cloud基于Spring Cloud Commons开发的,org.apache.http.client.HttpClient类确实存在于旧版本的httpclient中,但是它使用内部的org.apache.http.impl.client.HttpClientBuilder类在新版本中却不存在--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.4</version><scope>compile</scope></dependency>

application.yml 配置文件内容


com:nacos_address: 10.114.57.125:8848
server:port: 8081
spring:application:name: dubbo-consumercloud:nacos:discovery:server-addr: ${com.nacos_address}  # nacos服务注册中心的地址cluster-name: consumer-cluster  #集群名称namespace: b7ef9579-df75-41c2-8a95-e04aa03c273a  #命名空间config:server-addr: ${com.nacos_address}  # nacos配置中心地址namespace: b7ef9579-df75-41c2-8a95-e04aa03c273agroup: test-groupfile-extension: yaml  #配置文件的后缀名
dubbo:protocol:    #Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称,port 为协议端口( -1 表示自增端口,从 20880 开始)name: dubboport: -1  #dubbo协议缺省端口为20880,rmi协议缺省端口为1099,http和hessian协议缺省端口为80;如果没有配置port,则自动采用默认端口,如果配置为-1,则会分配一个没有被占用的端口。Dubbo 2.4.0+,分配的端口在协议缺省端口的基础上增长,确保端口段可控registry:#其中前缀spring-cloud说明:挂载到 Spring Cloud注册中心address: spring-cloud://${com.nacos_address}  #dubbo服务注册端口,注册中心服务器地址,如果地址没有端口缺省为9090,同一集群内的多个地址用逗号分隔,如:ip:port,ip:portcloud:subscribed-services: dubbo-product

启动类和controller层 ConsumerApplication.java

package org.example;
import org.apache.dubbo.config.annotation.Reference;
import org.example.service.HelloService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@EnableDiscoveryClient
@SpringBootApplication
@RestController
public class ConsumerApplication {// 版本号必须和 @Service注解上的 version一致@Reference(version = "1.0.0",check = false)private HelloService helloService;public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args);}@GetMapping("/test")public String test() {return helloService.hello("didispace.com");}
}

消费者模块全览

5、启动

注意:如果 @Reference注解没有加上 check = false配置,就必须先启动生产者,然后在启动消费者,否则会报错!

启动成功后如下图

在浏览器访问消费者接口 http://localhost:8081/test,可以正常访问

http://www.lryc.cn/news/602604.html

相关文章:

  • Yolo底层原理学习--(第二篇)
  • 【HTTP】防XSS+SQL注入:自定义HttpMessageConverter过滤链深度解决方案
  • window显示驱动开发—Direct3D 11 视频设备驱动程序接口 (DDI)
  • 网络编程接口htonl学习
  • CMakelists.txt 实现多级目录编译
  • 星辰大海的征途:星宸科技的中国芯片突围战
  • GaussianMesh运行指南
  • MySQL的常用数据类型详解
  • 飞算科技重磅出品:飞算 JavaAI 重构 Java 开发效率新标杆
  • 塔能科技物联运维平台及城市照明市场竞争力分析
  • kruscal重构树
  • 【Java EE】多线程-初阶-线程的状态
  • Ettus USRP X410/X440 运行 ADC 自校准
  • ubuntu qt环境下出现No suitable kits found解决方案
  • 2025最新Mybatis-plus教程(三)
  • 目前市面上有Android 16KB的手机吗
  • 【Bluedroid】bta_av_sink_media_callback(BTA_AV_SINK_MEDIA_CFG_EVT)流程源码分析
  • OSPF路由协议(上)
  • Linux驱动22 --- RV1126 环境搭建设备树修改
  • 【Linux篇】进程间通信:进程IPC
  • java每日精进 7.28【流程设计6.0(泳池和泳道)】
  • 重生之我在暑假学习微服务第三天《Docker-上篇》
  • 采用黑翅鸢优化算法BKA-CNN-LSTM、CNN-LSTM、LSTM、CNN四模型多变量回归预测,多输入单输出(Matlab)
  • 轻资产革命:连合直租如何用DaaS模式重塑企业资产逻辑
  • 【Apache Tomcat】
  • 设计模式实战:自定义SpringIOC(理论分析)
  • 中国汽车能源消耗量(2010-2024年)
  • 力扣17:电话号码的字母组合
  • 设计模式(二十四)行为型:访问者模式详解
  • ADB+Python控制(有线/无线) Scrcpy+按键映射(推荐)