ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springcloud-服务的生产者和消费者

2021-06-25 14:34:11  阅读:165  来源: 互联网

标签:调用 消费者 生产者 springcloud class public dept eureka id


  1. provider 服务生产者环境的搭建

    导入相关依赖:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
  <version>1.4.6.RELEASE</version>
</dependency>

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

配置yml文件

server:
port: 8001

mybatis:
type-aliases-package: com.fly.pojo
mapper-locations: classpath:mybatis/mapper/*.xml
configuration:
  map-underscore-to-camel-case: true

spring:
application:
  name: springcloud-provider-dept
 #数据源配置
datasource:
  type: com.alibaba.druid.pool.DruidDataSource
  driver-class-name: org.gjt.mm.mysql.Driver
  url: jdbc:mysql://localhost:4001/db01?serverTimeZone=UTC&useUnicode=true&characterEncoding=utf-8
  username: *****
  password: *******

#eureka配置
eureka:
client:
  service-url:
     #连接的eureka地址
    defaultZone: http://localhost:7001/eureka

instance:
  instance-id: springcloud-privider-dept-8001


info:
app.name: zhu
company.name: zhu

编写主启动类

@SpringBootApplication
@EnableEurekaClient //开启eureka客户端配置
//@EnableCircuitBreaker
public class ProviderApplication {
   public static void main(String[] args) {
       SpringApplication.run(ProviderApplication.class, args);
  }
}

 

  1. consumer服务消费者的搭建

##服务的搭建和配置和生产者一致##

调用方式:Ribbon 和 Feign 两种

导入ribbon相关的依赖

<!-- ribbon -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-ribbon</artifactId>
  <version>1.4.6.RELEASE</version>
</dependency>

 

Ribbon调用方式:

//编写RestTemplate配置,并配置负载均衡机制默认是轮询(这样可以直接通过服务名去调用)
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
  return new RestTemplate();
}


//调用示例:
@RestController
public class DeptConsumerController {

  @Resource
  private RestTemplate restTemplate;

  @Resource
  private DiscoveryClient client;

  //服务的生产者的服务名
  private static final String REST_URL_PREFIX = "http://springcloud-provider-dept";

  @GetMapping("/consumer/dept/get/{id}")
  public Dept get(@PathVariable("id") Long id) {
      Dept dept = restTemplate.getForObject(REST_URL_PREFIX + "/dept/getById?id=" + id, Dept.class);
      return dept;
  }
}

 

Feign 调用方式:

Feign 调用方式更能体现面向接口编程的思想

//主启动类中需要开启Feign相关的配置
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = {"com.fly"})
public class FeignConsumerApplication {
   public static void main(String[] args) {
       SpringApplication.run(FeignConsumerApplication.class, args);
  }
}

//1. 编写一个服务调用的接口
@Component
//指定要调用的服务端的服务名称
@FeignClient(value = "springcloud-provider-dept")
public interface DeptService {

   @GetMapping("/dept/getById")
   public Dept queryDeptById(Long id);

   @GetMapping("/dept/list")
   public List<Dept> queryAll();
}


//按照接口的方式直接调用
@RestController
public class DeptConsumerController {

   @Resource
   private DeptService deptService;

   @GetMapping("/consumer/dept/get/{id}")
   public Dept get(@PathVariable("id") Long id) {
       return deptService.queryDeptById(id);
  }

   @GetMapping("/consumer/dept/list")
   public List<Dept> list() {
       return deptService.queryAll();
  }
}

 

标签:调用,消费者,生产者,springcloud,class,public,dept,eureka,id
来源: https://www.cnblogs.com/zhu12/p/14930734.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有