Dubbo中Provider与Consumer搭建

1.Provider搭建

a.新建Maven Project, 里面只有接口(dubbo-service)
RPC框架不希望Consumer知道具体实现.如果实现类和接口在同一个项目中,Consumer依赖这个项目时,就会知道实现类具体实现.

package com.shi.api;
/**
 * 接口
 * @author shixiangcheng
 * 2019-06-07
 */
public interface UserService {
	public String sayHi(String name);
}

b.新建Maven Project, 写接口的实现类(dubbo-service-impl)
在duboo-service-impl中配置pom.xml

   
      com.shi
      dubbo-service
      0.0.1-SNAPSHOT
    

接口实现类

package com.shi.api.impl;
import com.shi.api.UserService;
/**
 * 接口实现类
 * @author shixiangcheng
 * 2019-06-07
 */
public class UserServiceImpl implements UserService {
	public String sayHi(String name) {
		return "Hello "+name;
	}
}

dubbo-provider.xml



	
	
    
    
    
    
    
    
    
    
    

applicationContext.xml



   
   	
	

提供方测试类

package com.shi.test;
import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * 提供方测试类
 * @author shixiangcheng
 * 2019-06-07
 */
public class Test {
	public static void main(String [] args) throws IOException{
		ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
		context.start();//启动Spring容器
		System.in.read();
	}
}

2.Consumer搭建

a.新建Maven Project(dubbo-consumer)
在duboo-consumer中配置pom.xml

  
      com.shi
      dubbo-service
      0.0.1-SNAPSHOT
    

dubbo-consumer.xml



	
	
    
    
    
    

测试类

package com.shi.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.shi.api.UserService;
/**
 * 消费方测试类
 * @author shixiangcheng
 * 2019-06-07
 */
public class Test {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext
		     (new String[]{"dubbo-consumer.xml"});
		 //@Reference从注册中心得到代理对象,通过代理对象调用真实方法
		UserService userService=(UserService)context.getBean("userService");
		System.out.println(userService.sayHi("World"));
	}
}

3.用telnet远程调用dubbo

a.开启telnet功能(下面是windows 10操作系统的截图)
Dubbo中Provider与Consumer搭建_第1张图片
b.将提供方服务启动并在ZK注册成功
c.调用接口
命令:telnet Ip 端口
Dubbo中Provider与Consumer搭建_第2张图片
命令:ls 显示服务列表
命令:invoke 调用接口
Dubbo中Provider与Consumer搭建_第3张图片
补充:若接口参数为对象:

public String sayHi(UserDTO userDTO)

则调用命令如下:

invoke  com.shi.service.UserService.sayHi({"id":"11","name":"888","class":"com.shi.UserDTO"}) 

若接口参数为集合:

public String sayHi(List userDTOList)

则调用命令如下:

invoke com.shi.service.UserService.sayHi([{"id":"11","name":"888","class":"com.shi.UserDTO"}])

欢迎大家积极留言交流学习心得,点赞的人最美丽,谢谢

你可能感兴趣的:(Dubbo)