springboot整合dubbo

整合springboot与dubbo,最合适的资料是从官网入手。dubbo官网:http://dubbo.apache.org/en-us/index.html。由官网下的github首页,可以找到springboot与dubbo整合的github地址:https://github.com/apache/incubator-dubbo-spring-boot-project 。

一、生产者

搭建dubbo需要使用注册中心,一般使用zookeeper,在此不做说明。在spring官网生成spingboot的demo之后,需要在porm.xml添加如下依赖:

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

在application.properties文件中添加如下信息:

# Base packages to scan Dubbo Components (e.g., @Service, @Reference)
#dubbo服务提供者的包,服务提供者是具体的服务的实现,需要添加@Serivce或者@Reference标签,且该注解是dubbo的注解非spring的
dubbo.scan.basePackages  = com.cxn.demo.services

# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = myProvider
dubbo.application.name = myProvider

## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345

## RegistryConfig Bean
dubbo.registry.id = my-registry
dubbo.registry.address = zookeeper://127.0.0.1:2181

定义一个简单的接口BookService,并且实现该接口:

package com.cxn.demo.interfaces;


import java.util.List;

public interface BookService {
    public List<String> listBooks();
}

import java.util.ArrayList;
import java.util.List;

@Service
public class BookServiceImpl implements BookService {
    @Override
    public List<String> listBooks() {
        ArrayList<String> result = new ArrayList<>();
        result.add("碧血剑");
        return result;
    }
}

至于启动类,则不需要做任何修改,保持原样即可:

package com.cxn.demo;

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

@SpringBootApplication
public class DemoApplication {

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

启动后,可以看到日志中有如下信息,则代表配置正确且注册成功。

 

二、消费者

消费者的porm.xml文件引入相同的依赖,application.properties文件略有不同,有些信息可以不用引入(比如dubbo端口就不需要了):

# Spring boot application
spring.application.name = dubbo-consumer-demo
server.port = 8080
management.port = 8081


# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = dubbo-consumer-demo
dubbo.application.name = dubbo-consumer-demo

## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo

dubbo.registry.address = zookeeper://127.0.0.1:2181

将BookService接口进行引入,并且在使用到dubbo服务的地方,用@Reference进行引入,比如我写了个controller,在controller使用到了这个dubbo服务:

package com.cxn.demo;

import com.alibaba.dubbo.config.annotation.Reference;
import com.cxn.demo.interfaces.BookService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class HelloController {

    @Reference(check = false,mock = "com.cxn.demo.BookServiceMock")
    private BookService bookService;

    @GetMapping("/hello")
    public String sayHello(){
        List<String> strings = bookService.listBooks();
        return bookService.listBooks().toString();
    }
}

此处还使用了服务降级,将mock值设置为true,并且在用BookServiceMock类实现了BookService的降级业务处理类,当服务不可用时,会使用该指定的Mock类进行处理;此处我还设置了校验为false,使得即使provider没有启动起来,也能正常启动consumer:

package com.cxn.demo.interfaces;

import java.util.ArrayList;
import java.util.List;

public class BookServiceMock implements BookService {
    @Override
    public List<String> listBooks() {
        ArrayList<String> strings = new ArrayList<>();
        strings.add("我就是个测试");
        return strings;
    }
}

如果启动的时候看到如下信息,则注册成功:

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值