SpringBoot整合Dubbo(无注册中心)示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011123972/article/details/89357053

文中说明不当的,欢迎指正!

前言

熟悉dubbo的朋友都知道,dubbo可通过指定Url方式绕过注册中心直连指定的服务地址,所以想当然会想到那么可不可以不使用注册中心。本文就是SpringBoot整合Dubbo(无注册中心)的示例展示。本文中SpringBoot版本用的是2.0.2.RELEASE。

提供者dubbo-provider

配置pom.xml

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- 版本号根据可实际情况确定 -->
		<!-- Spring Boot使用dubbo-spring-boot-starter集成Dubbo -->
		<dependency>
			<groupId>io.dubbo.springboot</groupId>
			<artifactId>spring-boot-starter-dubbo</artifactId>
			<version>1.0.0</version>
		</dependency>
		<!-- 日志依赖 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
	</dependencies>

配置application.properties

server.port=8082
spring.dubbo.application.name=dubbo-provider
# N/A表示不使用注册中心
spring.dubbo.registry.address=N/A
# dubbo协议
spring.dubbo.protocol.name=dubbo
# duboo端口号
spring.dubbo.protocol.port=20882
# 发布到dubbo的接口所在包位置,自行定
spring.dubbo.scan=com.sd.service

编写Service

DemoService.java

public interface DemoService {
    String hello(String name);
}

DemoServiceImpl.java

@Service(version = "1.0.0")
public class DemoServiceImpl implements DemoService {

    @Value("${server.port}")
    private String server_port;

    @Override
    public String hello(String name) {
        return "From "+server_port+" Spring-Boot-Starter Provider, Hello "+name;
    }
}

注意:@Service是com.alibaba.dubbo.config.annotation.Service

启动dubbo-provider

执行启动类里的main方法,即可启动该项目。

@SpringBootApplication
public class DubboProviderApplication {

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

如果想看是否发布成功,也可以采用windows下执行cmd命令: telnet 127.0.0.1 20882,端口号根据实际情况而定。然后采用ls命令查看已发布的端口,invoke执行相关方法,这个网上例子很多,这里简单提下。

调用者dubbo-client

配置pom.xml

和dubbo-provider基本一样。但是由于我想直接在浏览器测试,所以可以使用依赖

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

配置application.properties

server.port=8099
spring.dubbo.application.name=dubbo-provider
# N/A表示不使用注册中心
spring.dubbo.registry.address=N/A
# 发布到dubbo的接口所在包位置,自行定
spring.dubbo.scan=com.sd.service

编写Service

DemoService.java

public interface DemoService {
    String hello(String name);
}

编写Controller

@RestController
@RequestMapping(value = "/no-register-hello")
public class NoRegisterHelloController {

    /**
     * 直接通过dubbo url调用服务
     * */
    @Reference(version = "1.0.0", url = "dubbo://127.0.0.1:20882")
    private DemoService demoService;

    @RequestMapping(value = "/index")
    public String index() {
        return demoService.hello("Handsome Student");
    }
}

启动和测试

用和启动dubbo-provider一样的方式启动dubbo-client,然后可以打开浏览器,输入网址localhost:8099/no-register-hello/index,既可以看到返回,如下图
测试结果

猜你喜欢

转载自blog.csdn.net/u011123972/article/details/89357053