文档章节

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

yizhichao
 yizhichao
发布于 2016/07/13 15:54
字数 709
阅读 332
收藏 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

粉丝 14
博文 454
码字总数 333315
作品 0
南京
程序员
私信 提问
如何快速开发一个 Dubbo 应用

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

Java填坑之路
07/26
0
0
深入 Spring Boot : 快速集成 Dubbo + Hystrix

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

小致dad
07/02
0
0
服务化改造实践(三) | Dubbo + Zipkin

随着业务的发展,应用的规模不断的扩大,传统的应用架构无法满足诉求,服务化架构改造势在必行,以 Dubbo 为代表的分布式服务框架成为了服务化改造架构中的基石。随着微服务理念逐渐被大众接...

阿里云云栖社区
10/24
0
0
SpringBoot | 第二十九章:Dubbo的集成和使用

前言 今年年初时,阿里巴巴开源的高性能服务框架又开始了新一轮的更新,还加入了。原先项目使用了之后,已经比较少用。目前又抽调回原来的行业应用部门,可能还会使用进行服务调用。趁着编写...

oKong
09/28
0
0
深入浅出Dubbo剖析出视频教程了!!!

深入浅出Dubbo剖析出视频教程了,目前出了Dubbo剖析-基础教程,本课程作为深入浅出Dubbo课程系列的基础篇,内容如下: 第一章 初始Dubbo(免费) 第二章 使用 ZooKeeper 搭建服务治理中心 第...

阿里加多
05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

没什么启示的启示——《中国生存启示录》读后感4300字范文

没什么启示的启示——《中国生存启示录》读后感4300字范文: 文:夜晨1981。先后两次阅读这本书,第一次是2016年3月,第二次是2018年12月。读了两遍,都有一个理由,就是梁晓声这个名字。不知...

原创小博客
昨天
3
0
ubuntu常用操作

显卡GPU 查看显卡信息sudo lshw -numeric -class video# 查看显卡型号lspci | grep -i nvidia# 查看驱动版本sudo dpkg --list | grep nvidia-*或者 ubuntu-drivers devices#查看显卡...

hc321
昨天
2
0
mysql密码重置

方法一: 在my.ini的[mysqld]字段加入: skip-grant-tables 重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysql mysql>use mysql; mysql>更新 update user set password=pas...

architect刘源源
昨天
6
1
SpringBoot + Mybatis 配置多数据源(Srping boot 二)

前置条件,你已经配置好spring boot+mybatis,可以参考之前的博客 实现逻辑通过注解+aop切面编程来动态更新datasource 第一步,配置多个DataSource server: port: 8080freezing: ...

小海bug
昨天
13
0
连续潜在变量---概率PCA

最大似然PCA 用于PCA的EM算法 贝叶斯PCA 因子分解

中国龙-扬科
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部