springboot整合dubbo+zookeeper

springboot整合dubbo+zookeeperspringboot整合dubbo+zookeeper项目结构:注意:在做此demo之前应该先自行搭建好zookeeper环境也可以搭建dubbo监控环境1.随便创建一个项目,之后添加一个maven项目用于存放接口packagecom.wzb.service;/***@authorSatsuki*@time2019/8/2717:51*@descripti…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

springboot整合dubbo+zookeeper

项目结构:

在这里插入图片描述

注意:在做此demo之前应该先自行搭建好zookeeper环境

也可以搭建dubbo监控环境

1.随便创建一个项目,之后添加一个maven项目用于存放接口

package com.wzb.service;

/** * @author Satsuki * @time 2019/8/27 17:51 * @description: * 一些模拟数据库事务的方法 */
public interface TestService { 
   
    public void ins();
    public void del();
    public void upd();
    public void sel();
}

Jetbrains全家桶1年46,售后保障稳定

2.创捷服务提供者(将服务注册到zookeeper)

pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.wzb</groupId>
    <artifactId>provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>provider</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.wzb</groupId>
            <artifactId>service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.8.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.13</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

application.properties:

#spring项目名
spring.application.name=dubbo_auto_configuration_provider_demo
#Dubbo provider configuration
dubbo.application.name=dubbo_provider
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
#扫描注解包通过该设置将服务注册到zookeeper
dubbo.scan.base-packages=com.wzb.provider.service

具体服务实现:

package com.wzb.provider.service.impl;

import com.wzb.service.TestService;
import org.apache.dubbo.config.annotation.Service;



/** * @author Satsuki * @time 2019/8/27 15:35 * @description: * 模拟数据库事务实现 */
@Service(version = "1.0.0",interfaceClass = TestService.class)
//@Service(version = "1.0.0")
public class TestServiceImpl implements TestService { 
   
    @Override
    public void ins() { 
   
        System.out.println("insert");
    }

    @Override
    public void del() { 
   
        System.out.println("delete");
    }

    @Override
    public void upd() { 
   
        System.out.println("update");
    }

    @Override
    public void sel() { 
   
        System.out.println("select");
    }
}

启动类:

package com.wzb.provider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ProviderApplication { 
   

    public static void main(String[] args) { 
   
        SpringApplication.run(ProviderApplication.class, args);
    }

}

步骤总结:

1.搭建pom环境

2.写好配置文件(一定要写上dubbo.scan.base-packages该配置会扫描你写的服务并注册到zookeeper)

3.具体服务实现

4.运行springboot启动类即可

3.创建服务消费者(服务使用者:通过远程调用服务使用)

pom文件与provider一致不再列出

application.properties:

#dubbo configuration
dubbo.application.name=dubbo_consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181

#避免端口冲突
server.port=8085

服务调用:

package com.wzb.consumer.controller;


import com.wzb.service.TestService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import javax.annotation.Resource;


/** * @author Satsuki * @time 2019/8/27 15:58 * @description: * 调用dubbo */
@RestController
public class TestController { 
   

// @Resource
// private TestService testServiceImpl;
    @Reference(version = "1.0.0")
    private TestService testServiceImpl;

    @RequestMapping("/ins")
    public String ins(){ 
   
        testServiceImpl.ins();
        return "ins";
    }

    @RequestMapping("/del")
    public String del(){ 
   
        testServiceImpl.del();
        return "del";
    }

    @RequestMapping("/upd")
    public String upd(){ 
   
        testServiceImpl.upd();
        return "upd";
    }

    @RequestMapping("/sel")
    public String sel(){ 
   
        testServiceImpl.sel();
        return "sel";
    }
}

之后只要写一个springboot启动类启动服务并且通过url访问即可测试调用服务

结果如下:

在这里插入图片描述
在这里插入图片描述

完成

demo地址: https://github.com/luoziling/dubbotest1

欢迎star fork

踩坑:

java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/TreeCacheListener

在pom文件中加入这两个依赖即可

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>4.0.1</version>
</dependency>

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>2.8.0</version>
</dependency>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/198622.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • C语言实现简单贪吃蛇代码

    C语言实现简单贪吃蛇代码基本构成穿墙控制死亡控制初始化蛇(init_snake函数)移动蛇(move_snake函数)打印蛇(print_snake函数)利用for循环检测坐标对应的蛇的位置代码演示#include<stdio.h>#include<windows.h>#include<conio.h>#include<time…

  • 浏览器代理服务器没有响应解决方案怎么办_电脑代理服务器无响应

    浏览器代理服务器没有响应解决方案怎么办_电脑代理服务器无响应前几天,为了满足爬虫的需要,我在自己电脑上设置了一个代理IP。在利用代理IP运行爬虫程序一天之后,终于爬够了所需的数据量。但是非常奇怪的是,爬完虫的第二天,我用浏览器就打不开网页了,浏览器一直提示我代理服务器没有响应,或者说是ERR_PROXY_CONNECTION_FAILED这一错误。我刚开始的时候以为是浏览器的问题,但是在更换了许多浏览器之后依然没有用。…

  • python 使用 with open() as 读写文件

    python 使用 with open() as 读写文件读文件:要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:&gt;&gt;&gt;f=open(‘E:\python\python\test.txt’,’r’)标示符’r’表示读,这样,我们就成功地打开了一个文件。如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在:…

  • es6数组方法总结

    es6数组方法总结1、for循环2、foreach(es5)3、map(es5)4、some5、every6、filter功能需求:扫码枪扫商品去判断当前护理项目下面是否存在这个商品如果有那么就存在前端的集合里面如果没有则提醒没有此商品护理项目会有多个会存在多个护理项目下面存在相同的商品需要核销判断此商品是否存在我是用的some方法letnewAry=_this.goodsList.some(n=>{ letres=n.goodsList.some(r=&.

  • 智能体脂秤解决方案[通俗易懂]

    这几年,随着智能科技的崛起,一大波智能产品纷纷上线,其中就有这不得不说的智能体脂秤。生活越来越富足的同时,体重也随之增长。人们对于健康的重视逐渐提升,体脂秤的功能也不只局限于称体重,还有很多一般体脂秤没有的功能。    智能体脂秤方案工作原理    智能秤其实是使用了生物电阻抗技术,在秤的表面加入了ITO导电膜或许导电金属片,当人体光脚踩上去之后会组成闭环电极,由于脂肪不导电而水分导电,所以可以通过计算电流值、电阻值配合体重值,来计算身体里脂肪的含量。换句话说,要测脂肪率,就必须赤脚上阵。   

  • p6spy的使用和配置「建议收藏」

    p6spy的使用和配置「建议收藏」【注意】:本教程适用与springboot项目1.加载jar包<!–sql打印–><!–https://mvnrepository.com/artifact/p6spy/p6spy–><dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId>

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号