文档章节

spring-boot 作为dubbo客户端 调用 dubbo 服务端 配置以及代码段

yizhichao
 yizhichao
发布于 2016/07/13 15:54
字数 709
阅读 2.6K
收藏 0

阿里云携手百名商业领袖、技术大咖,带您一探行进中的数字新基建!>>>

第一、前提:

dubbo 服务端   以及启动好(dubbo控制台  zookeeper 等)

1)dubbo服务端  BBUS

2)dubbo控制台

3)zookeeper

查看dubbo控制台

http://192.168.1.112:28080

root/root

二、配置springboot 作为dubbo客户端消费者 调用dubbo bbus提供者。

第一步:pom.xml 引入

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>

<dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.7</version>
        </dependency>

第二加入 dubbo.properties 和 dubbo bean 配置文件

applicationContext-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">
	<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
	<dubbo:application name="bbus_c_uas001" />
	<dubbo:consumer timeout="15000" retries="0" />
	<!-- 使用multicast广播注册中心暴露发现服务地址 -->
	<!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->


	<!-- 单注册中心配置 -->
	<dubbo:registry address="zookeeper://192.168.1.112:2181" />

	<!-- 多注册中心配置 -->
	<!-- <dubbo:registry id="nanjingRegistry" address="zookeeper://192.168.1.110:2181" 
		/> <dubbo:registry id="shanghaiRegistry" address="zookeeper://192.168.1.110:2182" 
		default="false" /> <dubbo:registry id="hanzhouRegistry" address="zookeeper://192.168.1.110:2183" 
		default="false" /> <dubbo:registry address="nanjingRegistry,shanghaiRegistry,hanzhouRegistry" 
		/> -->

	<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
	<dubbo:reference id="demoService"
		interface="com.allcam.modules.demo.inf.DemoService" />

	<dubbo:reference id="adsLoginService"
		interface="com.allcam.modules.login.inf.AdsLoginService" version="3.0" />

</beans>

dubbo.properties 

dubbo.application.name=yizhichao   
dubbo.application.owner=allcam
dubbo.application.logger=slf4j   
dubbo.registry.address=zookeeper://192.168.1.112:2181
dubbo.monitor.protocol=registry   
dubbo.protocol.name=dubbo   
dubbo.protocol.port=20887  
dubbo.service.loadbalance=roundrobin   
# dubbo \u8bbe\u8ba1\u7684\u65f6\u5019\u4e00\u53f0\u673a\u5668\u4e4b\u8fd0\u884c\u4e00\u4e2ajvm\uff0c\u73b0\u5728\u591a\u4e2a\u540c\u65f6\u4f7f\u7528\uff0c\u9700\u8981\u4fee\u6539\u914d\u7f6e\u9879   
#dubbo.registry.file=/ROOT/tmp/dubbo_cus/client.properties

 

第三 在Application增加dubbo的bean

 @ImportResource({"classpath:applicationContext-dubbo.xml"}) //加入spring的bean的xml文件 

package com.allcam.uas;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.ImportResource;

/**
 * 
 * <一句话功能简述> <功能详细描述>
 * 
 * @author yizhichao
 * @version [版本号, 2016年7月12日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@SpringBootApplication
@ImportResource({"classpath:applicationContext-dubbo.xml"}) //加入spring的bean的xml文件   
// same as @Configuration @EnableAutoConfiguration
// @Configuration
// @ComponentScan
// @EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {
	// private static final Logger logger =
	// LoggerFactory.getLogger(Application.class);

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(Application.class);
	}

	public static void main(String[] args) {
		// File file = new File("log4j2.xml");
		// BufferedInputStream in = null;
		// try
		// {
		// in = new BufferedInputStream(new FileInputStream(file));
		// final ConfigurationSource source = new ConfigurationSource();
		// source.setInputStream(in);
		// Configurator.initialize(null, source);
		// }
		// catch (FileNotFoundException e)
		// {
		// e.printStackTrace();
		// }
		SpringApplication.run(Application.class, args);
	}

	// @Configuration
	// static class WebMvcConfigurer extends WebMvcConfigurerAdapter {
	//
	// public void addInterceptors(InterceptorRegistry registry) {
	// registry.addInterceptor(new HandlerInterceptorAdapter() {
	//
	// @Override
	// public boolean preHandle(HttpServletRequest request, HttpServletResponse
	// response, Object handler)
	// throws Exception {
	// request.getContextPath();
	// System.out.println("11111111111
	// Application.WebMvcConfigurer.interceptor");
	// return true;
	// }
	// }).addPathPatterns("/**");
	// }
	// }

}

第四:调用测试

    @ResponseBody
    @RequestMapping(value = "/get", method = {RequestMethod.POST, RequestMethod.GET})
    public List<String> get(HttpServletRequest request, HttpServletResponse response)
    {
    	System.out.println(request.getAttribute("jsonData"));
        List<String> list = new ArrayList<String>();
        list.add("hello");
        list.add("你好");
        WebApplicationContext  context =(WebApplicationContext)SystemContextListener.applicationContext;
        DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理
        for (int i = 0; i < 1; i++)
        {
            String hello = demoService.sayHello("world"); // 执行远程方法
            System.out.println(hello + "2"  +i);
        }
        return list;
    }

查看dubbo控制台 可以查看到调用记录

http://192.168.1.112:28080/governance/applications

 

© 著作权归作者所有

yizhichao

yizhichao

粉丝 16
博文 477
码字总数 365637
作品 0
南京
程序员
私信 提问
加载中

评论(0)

如何快速开发一个 Dubbo 应用

导读:在分布式系统中,远程调用是最基础也是最重要的基石。历史上,曾经先后出现过 CORBA、RMI、EJB、WebService 等技术和规范,在服务化以及微服务日趋流行的今天,更多的被广泛使用的是包...

Java填坑之路
2018/07/26
0
0
Spring-boot:5分钟整合Dubbo构建分布式服务

概述:   Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是...

osc_djpzrdiv
2019/05/24
5
0
转 阿里Dubbo疯狂更新,关Spring Cloud什么事?

原文地址: http://www.ityouknow.com/springcloud/2017/11/20/dubbo-update-again.html 阿里Dubbo疯狂更新,关Spring Cloud什么事? 2017/11/20 最近,开源社区发生了一件大事,那个全国 Ja...

osc_ol21ugo9
2018/04/14
5
0
深入 Spring Boot : 快速集成 Dubbo + Hystrix

背景 Hystrix 旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以...

小致dad
2018/07/02
764
0
分布式RPC系统框架Dubbo

导读   Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力;面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 dubbo官网:点我直达 第一个...

osc_bdhojhcu
04/16
5
0

没有更多内容

加载失败,请刷新页面

加载更多

URL 中文链接 编码错误 完美解决

直接上代码 str = "%25E4%25B8%25AD%25E6%2596%2587";console.log(str);str =decodeURIComponent(decodeURIComponent(str));console.log(str); 输出结果 %25E4%25B8%25AD%25E6%2596%25......

放只虎归个山
今天
17
0
.NET中小数,浮点数和双精度之间的区别? - Difference between decimal, float and double in .NET?

问题: What is the difference between decimal , float and double in .NET? .NET中的decimal , float和double float什么区别? When would someone use one of these? 有人什么时候会使用......

fyin1314
今天
22
0
如何找出Windows上正在侦听端口的进程? - How can you find out which process is listening on a port on Windows?

问题: 如何找出Windows上正在侦听端口的进程? 解决方案: 参考一: https://stackoom.com/question/CXO/如何找出Windows上正在侦听端口的进程 参考二: https://oldbug.net/q/CXO/How-can...

技术盛宴
今天
10
0
OSChina 周三乱弹 —— 一家动物都快饿成标本了~

@黑觉非常君 :前天晚上9点开始睡觉,睡到昨天上午8点起床,昨天下午2点又睡,睡到下午7点多,晚上10点又困了,又睡,睡到今天上午8点,中途没醒过,怎么这么能睡,是不是快挂了。 能睡不是好...

小小编辑
今天
24
0
神剧推荐全剧最污片段精剪

神剧推荐,全剧最污片段精剪 豆瓣评分最高,脑洞最大,脑回路最曲折,恶搞无数经典,没有一条差评的神剧 整个系列完整版 到这里观看

a57571735
今天
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部