Dubbo分组聚合
2016-08-08 11:09
239 查看
按组合并返回结果,比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需要从每种group中调用一次返回结果,合并结果返回,这样就可以实现聚合菜单项。
实现代码如下:
服务器端实现。
applicationContext.xml 配置:
dubbo.xml配置:
客户端实现:
dubbo.xml配置:
实现代码如下:
服务器端实现。
package com.yncp.dubbo.service; import java.util.List; import java.util.Map; public interface IDubboMergeService { /** * 测试分组聚合 * @return */ public String[] groupArray(); /** * 测试分组聚合 * @return */ public List<String> groupList(); /** * 测试分组聚合 * @return */ public Map<String,Object> groupMap(); }
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<String> groupList() { ArrayList<String> arrayList = new ArrayList<String>(); arrayList.add("张三"); arrayList.add("李四"); return arrayList; } public Map<String, Object> groupMap() { Map<String,Object> map=new HashMap<String, Object>(); map.put("user1", "张三"); map.put("user2", "李四"); return map; } @Override public String[] groupArray() { return new String[]{"A","B","C","D"}; } }
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<String> groupList() { ArrayList<String> arrayList = new ArrayList<String>(); arrayList.add("王五"); arrayList.add("鲁智深"); return arrayList; } public Map<String, Object> groupMap() { Map<String,Object> map=new HashMap<String, Object>(); map.put("user3", "王五"); map.put("user4", "鲁智深"); return map; } }
applicationContext.xml 配置:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 配置Bean --> <bean id="mergeService1" class="com.yncp.dubbo.service.impl.DubboMergeService1Impl"/> <bean id="mergeService2" class="com.yncp.dubbo.service.impl.DubboMergeService2Impl"/> <!-- 引入配置文件 --> <import resource="classpath:dubbo.xml"/> </beans>
dubbo.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 指定web服务名字 --> <dubbo:application name="DubboMerge"/> <!-- 声明服务注册中心 --> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/> <!-- 指定传输层通信协议 --> <dubbo:protocol name="dubbo" port="20880"/> <dubbo:protocol name="rmi" port="1099"/> <!-- 暴露你的服务地址 --> <dubbo:service ref="mergeService1" interface="com.yncp.dubbo.service.IDubboMergeService" protocol="dubbo,rmi" group="new" /> <dubbo:service ref="mergeService2" interface="com.yncp.dubbo.service.IDubboMergeService" protocol="dubbo,rmi" group="old" /> </beans>
客户端实现:
package com.yncp.dubbo.service; import java.util.List; import java.util.Map; public interface IDubboMergeService { /** * 测试分组聚合 * @return */ public String[] groupArray(); /** * 测试分组聚合 * @return */ public List<String> groupList(); /** * 测试分组聚合 * @return */ public Map<String,Object> 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<String, Object> entry : mergeService.groupMap().entrySet()) { String key = entry.getKey(); Object value=entry.getValue(); System.out.println(key+" "+value); } } }
dubbo.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 指定web服务名字 --> <dubbo:application name="DubboMerge"/> <!-- 声明服务注册中心 --> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/> <!-- 指定传输层通信协议 --> <dubbo:protocol name="dubbo" port="20881"/> <dubbo:protocol name="rmi" port="1010"/> <!-- 暴露你的服务地址 --> <dubbo:reference id="mergeService" interface="com.yncp.dubbo.service.IDubboMergeService" protocol="dubbo" group="*"> <dubbo:method name="groupArray" merger="true"/> <dubbo:method name="groupList" merger="true"/> <dubbo:method name="groupMap" merger="true"/> </dubbo:reference> </beans>
相关文章推荐
- 小心服务器内存居高不下的元凶--WebAPI服务
- 运维入门
- 利用开源软件打造自己的全功能远程工具
- Linux5.9无人值守安装
- 数据中心和云未来的十二大趋势
- 虚拟化基础架构Windows 2008篇之11-WSUS服务器的安装与配置
- 用vsftp快速搭建ftp服务器
- Linux快速构建apache web服务器
- 服务器监控策略浅谈
- 如何降低服务器采购成本 原理分析
- 建议的服务器分区办法
- 服务器托管六大优势分析
- Erlang实现的一个Web服务器代码实例
- 用VBScript写合并文本文件的脚本
- 服务器技术全面解析
- 保护DNS服务器的几点方法小结
- 我国成为全球第二大服务器消费国
- oracle列合并的实现方法
- 服务器 安全检查要点[星外提供]