通过feign实现订单中心(feign调用服务,在orderservice中调用product-server)

    1、copy orderserver 为orderserverfeign

    2、并使用idea打开

    3、将服务增加个feign

    在项目右键修改名称orderserver为orderserverfeign

 

    4、打开端口为8661 yml中的端口修改为8661

    5、修改各类名称refacter,并将application名字也修改正确

    6、增加依赖:

                <dependency>

             <groupId>org.springframework.cloud</groupId>

             <artifactId>spring-cloud-starter-openfeign</artifactId>

             </dependency>

    7、在Application类中增加注释

        @EnableFeignClients

    8、service中增加一个type为interface的类:ProductFeignService

        增加注解:@FeignClient(name="product-server")

            注意:name为服务定义的名称

            @FeignClient(name="PRODUCT-SERVICE") /*调用服务的名称必须和原服务名称一致,需要在服务中查找*/ 并增加一个函数,

            

                public interface ProductFeignService {

                    @GetMapping("/api/v1/product/findById") /*调用服务目录必须和原服务名称一致,需要在服务中查找*/

                    String fingById(@RequestParam(value = "id") int id);

                /**

                 * http://192.168.136.128:8766/api/v1/product/findById?id=2

                 */

                }

 

    9、增加包utils(用于解析josn字符串为json对象)

        增加类JsonUtils

         private static final ObjectMapper objectMapper =new ObjectMapper();

 

            /**

             * json字符串转换为Json格式

             */

            public static JsonNode str2JsonNode(String str){

                try {

                    return objectMapper.readTree(str);

                } catch (IOException e)

                {

                    return null;

                }

 

            }

    10、impl实现中增加

                @Autowired

                private ProductFeignService productFeignService;

                public ProductOrderFeign save(int userId, int productId) {

                //获取商品详情TODO

                String response=productFeignService.fingById(productId);

                JsonNode jsonNode=JsonUtils.str2JsonNode(response);

 

                ProductOrderFeign productOrderFeign =new ProductOrderFeign();

                productOrderFeign.setCreateTime(new Date());

                productOrderFeign.setUserId(userId);

                productOrderFeign.setProductId(productId);

                productOrderFeign.setTradeNo(UUID.randomUUID().toString());

                productOrderFeign.setProductName(jsonNode.get("name").toString());

                productOrderFeign.setPrice(Integer.parseInt(jsonNode.get("price").toString()));

 

                return productOrderFeign;;

    11、运行、访问http://192.168.136.128:8661/api/v1/orderfeign/save?userId=2&productId=2成功

    

订单服务,使用feign调用服务的更多相关文章

  1. 使用Feign调用服务的问题

    最近在搞微服务的东西,系统A提供了一个服务,定义方式: @RequestMapping(value = "/hasSuberList", method = RequestMetho ...

  2. Spring Cloud 使用Feign调用服务传递Header中的参数

    1.使用Feign 调用其他微服务,尤其是在多级调用的同时,需要将一些共同的参数传递至下一个服务,如:token.比较方便的做法是放在请求头中,在Feign调用的同时自动将参数放到restTempla ...

  3. Spring Boot 和 Spring Cloud Feign调用服务及传递参数踩坑记录

    背景 :在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnectio ...

  4. spring cloud feign 调用服务注意问题

    服务端 rest api @RequestMapping(value = "/phone") public ResponsePhone getPhone(@RequestParam ...

  5. 使用feign调用服务的时候注意的问题

    服务端 rest api @RequestMapping(value = "/phone") public ResponsePhone getPhone(@RequestParam ...

  6. SpringCloud使用Feign调用服务时,@FeignClient注解无法使用

    关于解决这个问题的理论根源传送门:https://blog.csdn.net/alinyua/article/details/80070890我在这里只提供解决方案 0. 结论和解决方案 Spring ...

  7. 使用springcloud的feign调用服务时出现的错误:关于实体转换成json错误的介绍

    http://blog.csdn.net/java_huashan/article/details/46428971 原因:实体中没有添加无参的构造函数 fastjson的解释: http://www ...

  8. Spring Boot 和 Spring Cloud Feign调用服务及传递参数踩坑记录(转)

    https://blog.csdn.net/uotail/article/details/84673347

  9. Spring Cloud微服务系列文,服务调用框架Feign

    之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON.    这种 ...

随机推荐

  1. 查询sqlserver中所有的数据库表 与 查询表中的说明注释字段

    1.查询数据库中所有的数据库表 SELECT * FROM sysobjects WHERE xtype = 'u' AND name != 'sysdiagrams'; 2.查询数据库表中的说明字段 ...

  2. zabbix(7)邮件报警配置

    邮件报警可以使用Linux自带邮件服务器(postfix等),也可以使用其他邮件服务器(像腾讯邮箱,126邮箱) 一.使用mail. 1.确定zabbix server是否安装发送邮件的命令mail, ...

  3. python3编程基础之一:标识符

    每种编程语言都是需要处理数据的,需要变量.函数.类等,而这些都是通过名称访问的.因此,能够作为变量.函数.类等名称的字符串就是标识符.数据,是计算机进行运算的实体.标识符,用来标记的符号,它会指向一个 ...

  4. GO 包相关

    1 包编译,eg: 引用pkgtest包 pkgtest包没有任何编译,项目直接导入引用,项目编译时实际是会编译pkgtest并在pkg\windows_386下生成pkgtest.a文件 再编译项目 ...

  5. Homebrew 使用国内镜像

    在国内的网络环境下使用 Homebrew 安装软件的过程中,可能会长时间卡在 Updating Homebrew ... 方法一:按command + c 取消本次更新操作,直接安装软件 方法二:设置 ...

  6. 【解决方案】SpringCloud项目优雅发版、部署

    背景 SpringCloud分布式项目,部署在多个节点上.一般的发版方式是,使用Kill -15 pid,逐一地关闭.部署.重启. 但中间涉及到一个问题,当执行kill命令时,服务虽然关闭,但Eure ...

  7. 彻底搞懂Python的字符编码

    前言:中文编码问题一直是程序员头疼的问题,而Python2中的字符编码足矣令新手抓狂.本文将尽量用通俗的语言带大家彻底的了解字符编码以及Python2和3中的各种编码问题. 一.什么是字符编码. 要彻 ...

  8. Python 死循环

    while True: try: x=int(input("Please enter a number:")) break except ValueError: print(&qu ...

  9. php的IP转换成整型函数ip2long()易出现负数

    php中将IP转换成整型的函数ip2long()容易出现问题,在IP比较大的情况下,会变成负数.如下<?php$ip = "192.168.1.2";$ip_n = ip2l ...

  10. Java中运行动态脚本

    这里主要总结Java中集成Groovy的应用. Groovy可以与Java完美集成来扩展我们的应用,比如替代Java+jexl实现算式表达式计算或其它功能.在Ofbiz中也集成了Groovy来执行一些 ...