首页 > 其他分享 >dubbo[2]_XML配置

dubbo[2]_XML配置

时间:2024-08-23 11:07:21浏览次数:17  
标签:XML dubbo zookeeper xml 配置 Animal provider public

本文介绍了zookeeper的下载安装以及用xml配置服务消费者和提供者的例子。

1. zookeeper下载安装

本文的例子使用zookeeper作为注册中心。

首先,从官网下载zookeeper,我选择的是Apache ZooKeeper 3.6.3版本。下载完成后,解压到自己的目录。https://zookeeper.apache.org/releases.html

然后,从conf文件夹找到zoo_sample.cfg配置文件,复制一份副本,重命名为zoo.cfg。重命名后打开,找到dataDir=/tmp/zookeeper这一行,可修改为自定义的文件夹: dataDir=../data。然后返回根目录,建一个data文件夹即可。

image

最后,启动bin目录下的zkServer.cmd,即可启动zookeeper。注意输出内容可能会有端口信息,默认2181。

2021-05-12 22:54:09,460 [myid:] - INFO  [main:NIOServerCnxnFactory@674] - binding to port 0.0.0.0/0.0.0.0:2181

2.dubbo例子

1)新建项目

新建两个项目,服务消费consumer模块和服务提供provider模块 。添加对应的maven支持和spring支持。

项目结构如下:

image

2)服务提供provider

  • 在pom.xml中添加dubbo相关的依赖。
<dependencies>
        <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.10</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.5</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.32.Final</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.8.0</version>
        </dependency>
    </dependencies>
  • 定义接口Animal。
/**
 * 动物接口
 */
public interface Animal {
    /**
     * 描述: 返回动物的叫声
     */
    String sound();
}
  • 定义具体类Cat实现Animal接口
public class Cat implements Animal {
    public String sound() {
        return "喵";
    }
}
  • 在resources 下新建provider.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应用的名称和所属者-->
    <dubbo:application name="myApp" owner="yt"/>

    <!-- 监控中心配置 -->
    <dubbo:monitor protocol="registry"/>

    <!--dubbo这个服务所要暴露的服务地址所对应的注册中心-->
    <!--<dubbo:registry address="N/A"/>-->
    <dubbo:registry address="zookeeper://localhost:2181" check="false"/>

    <!--当前服务发布所依赖的协议;webserovice、Thrift、Hessain、http-->
    <dubbo:protocol name="dubbo" port="20880"/>

    <!--服务发布的配置,需要暴露的服务接口-->
    <dubbo:service interface="com.yt.provider.Animal" ref="cat"/>

    <!--Bean bean定义-->
    <bean id="cat" class="com.yt.provider.Cat"/>
</beans>
  • 新建一个Provider类,用来启动项目
public class Provider {
    public static void main(String[] args) throws IOException {
        // xml配置文件的路径
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/provider.xml");
        context.start();
        // 任意键退出
        System.in.read();
    }
}

项目结构:

image

至此整个服务端就启动完成了。

3)服务消费consumer

  • 在pom.xml中添加dubbo相关的依赖。这一步和provider的依赖类似,只是多了要导入provider的依赖这一块。
<dependencies>
        <!-- 依赖于服务提供者的包 -->
        <dependency>
            <groupId>com.yt</groupId>
            <artifactId>provider</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        
    	...
    	<!-- 其他的就是provider的依赖,就省略了-->
    	....
    	
    </dependencies>
  • 在resources 下新建consumer.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="myApp" owner="yt"/>

    <!-- 监控中心配置 -->
    <dubbo:monitor protocol="registry"/>

    <!--dubbo这个服务所要暴露的服务地址所对应的注册中心-->
    <!-- <dubbo:registry address="N/A"/> -->
    <dubbo:registry address="zookeeper://localhost:2181" check="false" />
	
    <!-- 引用配置 -->
    <dubbo:reference id="animal" interface="com.yt.provider.Animal"/>
</beans>
  • 新建Consumer类,用来调用provider提供的接口
package com.yt.consumer;

import com.yt.provider.Animal;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 消费consumer
 */
public class Consumer {
    public static void main(String[] args) {
        // 配置文件路径
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/spring/consumer.xml");
        context.start();
        // 暴露的是接口Animal,多态。
        Animal animal = (Animal) context.getBean("animal");
        System.out.println(animal.sound());
    }
}
  • 输出结果:

项目结构:

image

至此,一个简单的dubbo例子就完成了。

当然,一个提供者可以供多个消费者消费。所以将consumer拷一份命名为consumer2,依然可以同时获取到provider暴露出的接口。

image

标签:XML,dubbo,zookeeper,xml,配置,Animal,provider,public
From: https://www.cnblogs.com/Aeons/p/18375595

相关文章

  • dubbo[1]_概念
    dubbo是一种基于Java的高性能RPC框架,最初由阿里巴巴开发,2018年2月进入Apache孵化器。官方网站(本文第2,3部分摘自官网):https://dubbo.apache.org/zh/ApacheDubbo|ˈdʌbəʊ|提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能......
  • 旧电脑配置玩魔兽世界带不动?云电脑轻松解决,用ToDesk!
    最近魔兽世界重新回归,不少游戏老玩家都摩拳擦掌准备上线回忆青春,但发现手里的旧电脑早已带不动游戏,硬要打开很容易出现画面卡顿、延迟严重,甚至频繁掉线,这些问题都让游戏乐趣大打折扣。但要为此再重新买一台电脑,对钱包又不太友好。那不如听我一句劝,用上ToDesk云电脑立马解决!不需......
  • centos7配置阿里云yum源镜像
    【阿里云镜像】切换阿里巴巴开源镜像站镜像——CentOS镜像2021-12-131866版权 简介: 阿里巴巴OPSX开源镜像站,提供CentOS、Debian、Ubuntu、Fedora、ArchLinux、Gentoo、openSUSE、ScientificLinux等主流发行版的软件源镜像。为阿里云和互联网用户提供免费高速的一......
  • 配置PXE预启动执行环境:使用PXE装机服务器网络引导装机
    文章目录PXE概述PXE批量部署的优点基本的部署过程搭建的前提条件搭建配置PXE装机服务器1.准备CentOS7安装源(YUM仓库)2.安装并启用TFTP服务3.安装并启用DHCP服务4.准备Linux内核和初始化镜像文件5.准备PXE引导程序6.安装FTP服务并准备CentOS7安装......
  • windows配置zed2相机环境
    准备工作1.确保电脑有独立显卡    如图,可以看到示例计算机中,有AMD独立显卡,而Intel为集成显卡。如果这里除了Intel集成显卡外,没有AMD、NVIDIA或者其他品牌显卡,则该计算机不是独显。2.安装anconda来创建zed环境     创建python=3.7的环境进行zed相机调试......
  • SpringMvc 以配置类的形式代替xml文件
    1、配置类1.1、创建Mvc项目之后创建MyWebApplicationInitializer类实现接口WebApplicationInitializerpublicclassMyWebApplicationInitializerimplementsWebApplicationInitializer{@OverridepublicvoidonStartup(ServletContextservletContext)thr......
  • 达梦读写分离集群的配置与测试
    操作系统版本CentOS7.6数据库版本DM8_20240712数据守护集群版本V4.0目录1.环境准备2.dm_svc.conf配置3.实现原理4.测试1.环境准备        配置读写分离集群,需要先搭建即时归档或实时归档模式的主备集群。我们使用上篇文档《在一台主机上搭建达梦主备集群......
  • 【App Service】在App Service中配置Virtual applications and directories,访问目录中
    问题描述在AppServiceWindows的环境中,想一个AppServices下部署多个站点,比如/根目录下,从wwwroot中读取项目文件,而/files则通过配置的虚拟目录来读取\mounts\sitefiles目录中的静态文件。在AppService的 ConfigurationPathMapping中配置如下:通过Kudu查看AppService......