(三)Dubbo的配置说明(启动时检测、负载均衡)以及事务问题解决

启动时检测

(一)以zookeeper作为服务注册中心的Dubbo入门案例(基于ssm)中我们是先启动provider再启动consumer,是没有问题的。但是如果我们先启动consumer时会报错找不到服务(如下)。
在这里插入图片描述
这是因为consumer在启动时会自动去检测所用到的服务是否存在。
只需要在provider方加上下面的配置就不会启动时检测,在开发环境中我们可以将启动时检测去掉。

<dubbo:consumer check="false"/>

或者加在调用的服务注解里面。

@Reference(check = false)

负载均衡

所谓负载均衡,就是将请求分配到不同的操作单元上执行,从而共同完成工作任务。
只需要consumer加上注解就行

@Reference(loadbalance = "random")

或者provider加上注解

@Service(loadbalance = "random")

就可以实现负载均衡的随机分配
我们在(一)以zookeeper作为服务注册中心的Dubbo入门案例(基于ssm)的基础上进行一下测试:
在provider上加上注解@Reference(loadbalance = "random")
打开consumer HelloServiceImpl实现类

@Service  //注意这里使用com.alibaba.dubbo.config.annotation.Service; 不是spring的注解
public class HelloServiceImpl implements HelloService {

    public String sayHello(String name) {
        return "8081:hello"+name;
    }
}

在这里加上8081用以区分,然后以8081的端口来启动tomcat加载项目。

@Service  //注意这里使用com.alibaba.dubbo.config.annotation.Service; 不是spring的注解
public class HelloServiceImpl implements HelloService {

    public String sayHello(String name) {
        return "8083:hello"+name;
    }
}

改成8083,再讲配置中的端口进行一下修改,然后用8083端口的tomcat启动provider项目:

<dubbo:protocol name="dubbo" port="20880"/>

启动provider进行访问,然后刷新:
在这里插入图片描述
在这里插入图片描述
会有两个端口显示,说明调用了不同的服务。打开Dubbo-admin进行查看:
在这里插入图片描述

在这里插入图片描述
这时会看到同一个接口被两个consumer注册了。

事务问题

当我们直接把@Transactional加到服务上的时候启动项目访问consumer
在这里插入图片描述
项目正常启动,但是找不到服务,并且在dubbo-admin中也没有发现服务的注册。
解决方法如下:
在provider注解上加上接口的名字

@Service(interfaceClass = HelloService.class)

并且在配置文件中引入proxy-target-class="true"

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

这时重新启动项目,发现又能重新访问到服务了,并且在dubbo-admin中又发现了服务的注册。

帮助到您请点赞关注收藏谢谢!!
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值