Dubbo 生产者和消费者的基本配置

发布于 2023-12-17 17:35:49 字数 5607 浏览 25 评论 0

一. 生产者

第一步:引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.12.0</version>
</dependency>

需要注意的是:2.6 之前的版本使用的 zkClient 客户端,从 2.6 开始 Dubbo 改用 curator 客户端。

第二步:配置生产者

<?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://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans            http://www.springframework.org/schema/beans/spring-beans-4.3.xsd            http://dubbo.apache.org/schema/dubbo            http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- 应用名称,用于计算依赖关系 -->
    <dubbo:application name="dubbo-service"  />

    <!-- 配置 Zookeeper 注册中心地址,也可以使用其它配置中心,详见参考手册 -->
    <!--clinet 属性用于指定 Dubbo 使用的 Zookeeper 的客户端的类型-->
    <dubbo:registry protocol="zookeeper" address="192.168.2.112:2181,192.168.2.113:2181,192.168.2.114:2181" client="curator" />

    <!-- 用 dubbo 协议在 20880 端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="cn.tjd.service.UserService" ref="userService" protocol="dubbo" />

    <!-- 和本地 bean 一样实现服务 -->
    <bean id="userService" class="cn.tjd.service.impl.UserServiceImpl" />
</beans>

第三步:启动 Spring 容器

package cn.tjd;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @Auther: TJD
 * @Date: 2020-07-08
 * @DESCRIPTION:
 **/
public class Provider {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"classpath:applicationContext-dubbo.xml"});
        context.start();
        System.in.read(); // 按任意键退出
    }
}

二. 消费者

第一步:引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.12.0</version>
</dependency>

需要注意的是:2.6 之前的版本使用的 zkClient 客户端,从 2.6 开始 Dubbo 改用 curator 客户端。

第二步:配置消费者

消费者大多是一个 web 项目,可能会有多个 spring 配置文件,需要注意在加载 Spring 配置文件时把这个配置文件加载进去。

<?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://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans            http://www.springframework.org/schema/beans/spring-beans-4.3.xsd            http://dubbo.apache.org/schema/dubbo            http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="dubbo-web"  />

    <!-- 使用 multicast 广播注册中心暴露发现服务地址 -->
    <dubbo:registry protocol="zookeeper" address="192.168.2.112:2181,192.168.2.113:2181,192.168.2.114:2181" client="curator" />

    <!-- 生成远程服务代理 -->
    <dubbo:reference id="userService" interface="cn.tjd.service.UserService" protocol="dubbo" />
</beans>

第三步:在 Controller 中引入依赖

如果我们在 dubbo 配置文件中通过 dubbo:reference 标签生成了远程服务的代理,那么 Spring 启动时 UserService 的代理对象就已经在 Spring 容器中了,我们只需要通过 @Autowired 注入依赖即可:

package cn.tjd.controller;

import cn.tjd.service.UserService;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Auther: TJD
 * @Date: 2020-06-29
 * @DESCRIPTION:
 **/
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/login")
    public String login(String username,String password){
        return userService.login(username,password);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

内心激荡

文章 0 评论 0

JSmiles

文章 0 评论 0

左秋

文章 0 评论 0

迪街小绵羊

文章 0 评论 0

瞳孔里扚悲伤

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文