SpringBoot-13-简单整合Dubbo


过程很曲折

本地windows安装zookeeper,要下载带“bin”的包,不然是未进行编译的,不能运行
“ZooKeeper audit is disabled” 是版本问题。用:apache-zookeeper-3.5.8-bin
tar在windows上解压不能成功
防火墙也关了的,端口也开启了的(不确定是否影响)
管理员权限启动zk
netstat –ano|findstr "2181"端口占用taskkill /f /pid 5555
黑窗启动dubbo-admin很不稳定,连接成功了也经常需要敲回车
每一小步都进行调试,不然pom.xml错了都不自知
服务注册不成功(在页面上显示不出来,需要切换版本解决!!)
注解一定不要用错!!!

环境准备

zk官网下载(将zoo_sample.cfg文件复制一份修改为zoo.cfg(其中有个路径要写实)  编辑zkServer.cmd尾部加pause)

dubbo-admin下载地址:

https://github.com/apache/dubbo-admin/tree/master

编译/打包

mvn clean package -Dmaven.test.skip=true

运行dubbo-admin

访问

http://localhost:7001/

root/root

进不了页面需要在黑窗里敲一下回车


zk和服务管理页面(dubbo-admin)已经好了,然后:服务发布不了,在服务管理页面看球不到

整了半天,把版本从2.3.2降到2.2.1就得行了,
再重新换成2.3.2又得行了,真是气死人丶这东西真是没法解释又超级浪费时间丶
还一定需要那个过时的@Service注解

消费者又消费不到,恶心丶

@Reference这个注解要导dubbo下的!!!!!!


示例代码

<version>2.3.2.RELEASE</version>

依赖

<!-- dubbo + zookeeper -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.8</version>
</dependency>
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>5.1.0</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>5.1.0</version>
</dependency>
<!--可能会引起日志冲突,需要排除一些东西-->
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.6.1</version>
    <!-- 排除slf4j-log4j12 -->
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

消费者与生产者路径一致

生产者

接口

public interface TicketService {
    public String getTicket();
}

实现类(Service注解已过期,新的用法不了解)

import com.example.service.TicketService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

@Service
@Component//用了dubbo尽量不要使用@Service注解,容易误解  Component万能注解
public class TicketServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return "yeeee";
    }
}

配置

server.port=8081
#服务应用名称
dubbo.application.name=provider
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#哪些服务要被注册
dubbo.scan.base-packages=com.example.service

消费者

接口

public interface TicketService {
    public String getTicket();
}

获取到接口(注解已过期,新用法待了解)

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    //去注册中心拿到服务
    @Reference//法一 定义路径相同的接口名  法二  pom坐标
    TicketService ticketService;

    public void buyTicket(){
        String ticket = ticketService.getTicket();
        System.out.println("在注册中心拿到==>"+ticket);
    }
}

配置

server.port=8083
dubbo.application.name=consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181

测试

@SpringBootTest
class ConsumerApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() {
        userService.buyTicket();
    }
}

Linux部署

首先jdk要1.8

zk/bin/zkServer.sh中添加环境变量

export JAVA_HOME=/usr/local/java8
export PATH=$JAVA_HOME/bin:$PATH

nohup java -jar dubbo-admin-0.0.1-SNAPSHOT.jar >temp.out &

http://xxx.xxx.xxx.xxx:7001/

消费者和服务者配置文件都添加:

dubbo.registry.timeout=23000
dubbo.provider.timeout=23000
dubbo.consumer.timeout=23000
dubbo.config-center.timeout=23000
dubbo.metadata-report.timeout=23000

https://github.com/ChenCurry/springboot-collection


击石乃有火,不击元无烟!!
原文地址:https://www.cnblogs.com/rain2020/p/13488107.html