SpringBoot项目集成Dubbo

一.提供者配置dubbo:

1.导入依赖

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

2.配置service

3.配置文件配置dubbo

//当前服务端口
server.port=8081
#logging.level.root= debug

//dubbo服务名称, 在控制台可以看到
dubbo.application.name=user-service-provider
//dubbo的注册地址(注册中心使用的是zookeeper)
dubbo.registry.address=192.168.31.215:2181
//注册协议zookeeper
dubbo.registry.protocol=zookeeper
//声明需要提供的服务包地址
dubbo.scan.base-packages=com.batac.cat.service.impl
//dubbo协议名
dubbo.protocol.name=dubbo
//dubbo的端口
dubbo.protocol.port=20880
//dubbo的镜像,会记录各个服务的调用次数
dubbo.monitor.protocol=registry

4.启动类配置

@EnableDubbo

二. 消费者配置dubbo:

1.引入依赖

 <dependency>
      <groupId>com.alibaba.boot</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>0.2.0</version>
 </dependency>

2.配置文件

//当前服务端口
server.port=8082
//服务名称
dubbo.application.name=boot-order-service-consumer
//注册地址
dubbo.registry.address=zookeeper://192.168.31.215:2181
//镜像注册协议(方式)
dubbo.monitor.protocol=registry

3.更改需要获取服务的注解

4. 启动类添加dubbo的注解

发布了124 篇原创文章 · 获赞 11 · 访问量 4万+
展开阅读全文

SpringBootDubbo集成问题

07-31

@Configuration @ConditionalOnClass(Exporter.class) @PropertySource(value = "classpath:/dubbo.properties") public class DubboConfiguration { @Value("${dubbo.application.name}") private String applicationName; @Value("${dubbo.application.logger}") private String logger; @Value("${dubbo.registry.protocol}") private String protocol; @Value("${dubbo.registry.address}") private String registryAddress; @Value("${dubbo.protocol.name}") private String protocolName; @Value("${dubbo.protocol.port}") private int protocolPort; @Value("${dubbo.protocol.serialization}") private String protocolSerialization; @Value("${dubbo.consumer.timeout}") private int consumerTimeout; @Value("${dubbo.consumer.retries}") private int consumerRetries; /** * 设置dubbo扫描包 */ @Bean public static AnnotationBean annotationBean(@Value("${dubbo.annotation.package}") String packageName) { AnnotationBean annotationBean = new AnnotationBean(); annotationBean.setPackage(packageName); return annotationBean; } /** * 注入dubbo上下文 */ @Bean public ApplicationConfig applicationConfig() { // 当前应用配置 ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName(applicationName); applicationConfig.setLogger(logger); return applicationConfig; } /** * 注入dubbo注册中心配置,基于zookeeper */ @Bean public RegistryConfig registryConfig() { // 连接注册中心配置 RegistryConfig registry = new RegistryConfig(); registry.setProtocol(protocol); registry.setAddress(registryAddress); return registry; } /** * 默认基于dubbo协议提供服务 */ @Bean public ProtocolConfig protocolConfig() { // 服务提供者协议配置 ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setName(protocolName); protocolConfig.setSerialization(protocolSerialization); protocolConfig.setPort(protocolPort); protocolConfig.setThreads(200); System.out.println("默认protocolConfig:" + protocolConfig.hashCode()); return protocolConfig; } /** * dubbo服务提供 */ @Bean(name = "defaultConsumer") public ConsumerConfig consumerConfig() { ConsumerConfig consumerConfig = new ConsumerConfig(); consumerConfig.setTimeout(consumerTimeout); consumerConfig.setRetries(consumerRetries); return consumerConfig; } } 基于Configuration配置Dubbo服务,在没有加入AOP的时候,正常发布,但是如果dubbo服务类,符合AOP条件,那么会造成SpringBoot启动时,先生成了Proxy,导致 AnnotationBean.isMatchPackage方法检测Bean时,与配置的扫描包路径不符,致使dubbo服务注册被略过, 想用@Order来设置顺序(dubbo服务注册先于AOP代理生成),但并未生效,请问各位大神有没有能帮忙解决的。万分感谢! ![图片说明](https://img-ask.csdn.net/upload/201707/31/1501500049_406527.png) 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览