• Dubbo分组聚合


    按组合并返回结果,比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需要从每种group中调用一次返回结果,合并结果返回,这样就可以实现聚合菜单项。
    实现代码如下:

    1. 服务器端实现。

      package com.yncp.dubbo.service;

      import java.util.List;
      import java.util.Map;

      public interface IDubboMergeService {

      /**
       * 测试分组聚合
       * @return
       */
      public String[] groupArray();
      
      /**
       * 测试分组聚合
       * @return
       */
      public List groupList();
      
      /**
       * 测试分组聚合
       * @return
       */
      public Map groupMap();
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17

      }

      package com.yncp.dubbo.service.impl;

      import java.util.ArrayList;
      import java.util.HashMap;
      import java.util.List;
      import java.util.Map;

      import com.yncp.dubbo.service.IDubboMergeService;

      public class DubboMergeService1Impl implements IDubboMergeService {

      public List groupList() { 
          ArrayList arrayList = new ArrayList();
          arrayList.add("张三");
          arrayList.add("李四");
          return arrayList;
      }
      
      public Map groupMap() { 
          Map map=new HashMap();
          map.put("user1", "张三");
          map.put("user2", "李四");
          return map;
      }
      
      @Override
      public String[] groupArray() { 
          return new String[]{"A","B","C","D"};
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18

      }

      package com.yncp.dubbo.service.impl;

      import java.util.ArrayList;
      import java.util.HashMap;
      import java.util.List;
      import java.util.Map;

      import com.yncp.dubbo.service.IDubboMergeService;

      public class DubboMergeService2Impl implements IDubboMergeService {

      public String[] groupArray() { 
          return new String[]{"A","B","C","D","E","F"};
      }
      
      public List groupList() { 
          ArrayList arrayList = new ArrayList();
          arrayList.add("王五");
          arrayList.add("鲁智深");
          return arrayList;
      }
      
      public Map groupMap() { 
          Map map=new HashMap();
          map.put("user3", "王五");
          map.put("user4", "鲁智深");
          return map;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17

      }

    applicationContext.xml 配置:

    
    
    
        
        
        
        
        
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    dubbo.xml配置:

    
    
    
        
        
        
        
        
        
        
    
        
        
         
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    客户端实现:

    package com.yncp.dubbo.service;
    import java.util.List;
    import java.util.Map;
    
    public interface IDubboMergeService {
    
        /**
         * 测试分组聚合
         * @return
         */
        public String[] groupArray();
    
        /**
         * 测试分组聚合
         * @return
         */
        public List groupList();
    
        /**
         * 测试分组聚合
         * @return
         */
        public Map groupMap();
    }
    
    
    package com.yncp.dubbo.service;
    import java.io.IOException;
    import java.util.Map;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    
    public class DubboStart {   
        public static void main(String[] args) throws IOException {
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            //分组聚合
            IDubboMergeService mergeService=(IDubboMergeService) ctx.getBean("mergeService");
           for (String string : mergeService.groupArray()) {
               System.out.println(string);
           }
           for (String string : mergeService.groupList()) {
               System.out.println(string);
           }
           for (Map.Entry entry : mergeService.groupMap().entrySet()) {
               String key = entry.getKey();
               Object value=entry.getValue();
               System.out.println(key+" "+value);
           }
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    dubbo.xml配置:

    
    
    
        
        
        
        
    
        
        
        
    
        
        
             
              
               
        
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
  • 相关阅读:
    3、Pinpoint-Agent端注册服务到Server端
    7-87 时间换算
    ABeam Team Building |「TDC Green Day——夏日Go Green·畅享山海间 环保公益行动」回顾
    CISSP-安全与风险管理
    07-树(Tree)结构分析
    蓝桥杯嵌入式AD采样解析
    Rust 基础
    融云AIGC专题:高知识密度与大数据处理双向奔赴的「金融大模型」
    32位单片机越来越多人用?简单跟上科技趋势
    数据结构和算法——线性结构
  • 原文地址:https://blog.csdn.net/m0_67390969/article/details/126654809