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

第一、前提:

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

1)dubbo服务端  BBUS

160116_KKYH_240535.png

2)dubbo控制台

160047_MhAk_240535.png

3)zookeeper

160202_137p_240535.png

查看dubbo控制台

http://192.168.1.112:28080

root/root

160255_wvsC_240535.png

二、配置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 配置文件

154615_Ijhd_240535.png

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;
    }

155610_YgUr_240535.png

155544_KeZY_240535.png

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

http://192.168.1.112:28080/governance/applications

155642_Oacf_240535.png

 

转载于:https://my.oschina.net/yizhichao/blog/711205

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值