• Dubbo常用功能04使用url指定服务


    1、apolication.yml的配置:

    server:
      port: 8001
    dubbo:
      application:
        name: site-service-boot-provider
      registry:
        address: zookeeper://ubu:2181
      scan:
        base-packages: com.yas.serviceprovider
    #  #指定某一种协议
    #  protocol:
    #    name: dubbo
    #    port: 20882
    
    #  protocol:
    #    name: rest
    #    port: 8787
    
      #指定多种协议
      protocols:
        pro1:
          id: dubbo1
          name: dubbo
          port: 20881
          host: 0.0.0.0
        pro2:
          id: dubbo2
          name: dubbo
          port: 20882
          host: 0.0.0.0

    2、服务提供者代码:

     1 package com.yas.serviceprovider.impl;
     2 
     3 import com.yas.api.SiteService;
     4 import org.apache.dubbo.common.URL;
     5 import org.apache.dubbo.config.annotation.Service;
     6 import org.apache.dubbo.rpc.RpcContext;
     7 
     8 @Service(version = "url")
     9 public class URLSiteServiceImpl implements SiteService {
    10 
    11     @Override
    12     public String getName(String name) {
    13         URL url = RpcContext.getContext().getUrl();
    14         return "url:" + name+",使用的协议是:"+url.getProtocol()+",端口是:"+url.getPort();
    15     }
    16 }

    注意第8行,没有指定protocol参数,则表示配置文件中配置的20881和20882端口的服务都会启动。

    3、服务消费者的代码:

     1 package com.yas.serviceconsumer.controller;
     2 
     3 import com.yas.api.SiteService;
     4 import org.apache.dubbo.config.annotation.Reference;
     5 import org.springframework.web.bind.annotation.RequestMapping;
     6 import org.springframework.web.bind.annotation.RequestParam;
     7 import org.springframework.web.bind.annotation.RestController;
     8 
     9 @RestController
    10 public class ProtocolSiteController {
    11 
    12 //    @Reference(version = "default",protocol = "")
    13 //    SiteService siteService1;
    14 //
    15 //    @RequestMapping("/pro1")
    16 //    public String getName1(@RequestParam("name") String name){
    17 //        return siteService1.getName(name);
    18 //    }
    19 //
    20 //    @Reference(version = "async",protocol = "")
    21 //    SiteService SiteService2;
    22 //
    23 //    @RequestMapping("/pro2")
    24 //    public String getName2(@RequestParam("name") String name){
    25 //        return SiteService2.getName(name);
    26 //    }
    27 
    28     @Reference(version = "url",url = "dubbo://127.0.0.1:20882/com.yas.api.SiteService:url")
    29     SiteService SiteService3;
    30 
    31     @RequestMapping("/url")
    32     public String getName3(@RequestParam("name") String name) {
    33         return SiteService3.getName(name);
    34     }
    35 }

    4、测试:

    使用postman请求地址:http://localhost:8000/url?name=zhangsan

    得到响应:url:zhangsan,使用的协议是:dubbo,端口是:20882

  • 相关阅读:
    vue vue-canvas-poster 生成海报
    vue 移动端拖曳指令
    小程序如何调起H5页面的支付
    vue H5微信支付代码
    java8的新特性
    java前端知识点整理
    java基础知识点整理
    ArcGis中地理数据库(sde)中概念及常见函数
    使用Arcgis时,在sde空间库常用的相关函数
    CentOS7虚拟机的网络模式-桥接模式配置
  • 原文地址:https://www.cnblogs.com/asenyang/p/15507211.html
Copyright © 2020-2023  润新知