SpringCloud微服务架构开发实战:如何集成BuS?
如何集成 BuS
Spring Cloud Bus致力于提供分布式消息总线的功能。目前,Spring Cloud Bus支持使用AMQP协议(如Kafka、Rabbit等)消息代理作为通道。
本节将演示如何集成Spring Cloud Bus。
初始化应用
首先在
micro-weather-config-client、micro-weather-config-server应用的基础上,重新创建一个新的应用micro-weather-config-client-bus 及 micro-weather-config-server-bus,用来演示Spring CloudBus的功能。
所需环境
为了演示本例子,需要采用如下开发环境。
JDK8。
.Gradle 4.0。
Spring Boot 2.0.0.M3。
Spring Cloud Starter Netflix Eureka Client Finchley.M2。
Spring Cloud Config Server Finchley.M2。
Spring Cloud Config Client Finchley.M2。
·Spring Cloud Starter Bus Dalston.SR5。
.`Erlang/OTP 20.2。
RabbitMQ 3.7.2。
注意:由于Spring Cloud Bus本身还处于一个发展阶段,官方在Finchley.M2版本中有bug未解决,因此,本节实例是基于Dalston.SR5版本来编写的。有关该bug 的描述,可见
https:/github.com/spring-cloud/spring-cloud-bus/issues/98。
更改配置
要使用Spring Cloud Starter Bus,最简单的方式莫过于添加
spring-cloud-starter-bus-amqp依赖。该依赖的默认实现就是Rabbit。
dependencies {
//...
//添加Spring Cloud starter Bus依赖
compile('org.springframework.cloud:spring-cloud-starter-bus-amqp')
}
application.properties文件中的spring.application.name,改为新的项目的名称
micro-weather-config-client-bus及 micro-weather-config-server-bus。同时,增加如下配置。
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
#spring.rabbitmg.username=guest
#spring.rabbitmq.password=guest
management.security.enabled=false
其中:
.spring.rabbitmq.*是消息中间件RabbitMQ相关的配置。如果RabbitMQ的host是localhost,则username和password是可选的;
management.security.enabled值设为false,用于禁用安全管理设置,利于本地调试。如果是在公司内网部署,不仅有物理隔离,也可以禁用安全管理设置。
下载安装RabbitMQ
目前,RabbitMQ最新版本为3.7.2。下载地址为
http:/www.rabbitmq.com/download.html。
由于RabbitMQ运行在Erlang 环境,因此确保在RabbitMQ安装前先安装好Erlang。Erlang 的安装包,可以在
http://www.erlang.org/downloads进行下载。本例使用Erlang/OTP 20.2。
1.配置Erlang
设置环境变量ERLANG_HOME值为Erlang目录,如本例为C:\Program Fileslerl9.2。在Path中
添加%ERLANG_HOME%lsbin。
在命令提示符下输入“erl”可得如下结果,即证明安装是正确的。
C:lUserslAdministrator>erl
Eshell v9.2(abort with^G)
1>
2.解压
下载
rabbitmq-server-windows-3.7.2.zip安装包,解压复制到任意安装目录,如本例为D:\rabbitmq_server-3.7.2。
在
rabbitmq_server-3.7.2lsbin目录下,包含几个脚本用来控制RabbitMQ服务器。
其中:
rabbitmq-server.bat启动broker作为一个应用;
rabbitmq-service.bat管理服务,并启动broker;
rabbitmqctl.bat管理运行的broker。
3.启动RabbitMQ服务器作为一个应用
执行下面指令来启动。
rabbitmg-server -detached
或者直接双击rabbitmq-server.bat脚本。
控制台将输出如下。
####
RabbitMQ 3.7.2. Copyright(C)2007-2017 Pivotal Software,
####
Inc.
Licensed under the MPL. See http://www.rabbitmq.com/
##########
########
########## Logs:C:/Users/ADMINT~1/AppData/Roaming/RabbitMO/log/RABBIT~1.LOG
C:/Users/ADMINI~1/AppData/Roaming/RabbitMQ/log/rabbit@AGOC3-705091335_upgrade.log
starting broker...completed with oplugins.
修改micro-weather-config-client-bus
在Git仓库中增加了
micro-weather-config-client-bus-dev.properties配置信息,该配置主要提供给micro-weather-config-client-bus应用使用。
auther=waylau.com
version=1.0.0
修改
micro-weather-config-client-bus应用,在应用中增加一个VersionController.java,用于演示如何从配置中心实时获取配置信息。VersionController.java 代码如下。
package com.waylau.spring.cloud.weather.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*Version controller.
*
@since 1.0.0 2017年12月31日
* @author Way Lau
*/
RefreshScope
CRestcontroller
public class versionController {
@value("${auther}")
private string auther;
@value("${version} ")
private string version;
@RequestMapping("/config")
public String getConfig({
return auther +""+ version;
}
}
其中,访问lconfig 接口,可以显示auther和 version的配置信息。这里需要注意的是,需要给动态加载变量的类上面加载@RefreshScope注解。
运行、测试
在启动应用之前,首先要确保RabbitMQ服务处于启动状态。
接着启动在之前章节中搭建的
micro-weather-eureka-server项目,之后再来启动本节的实例micro-weather-config-server-bus及 micro-weather-config-client-bus。
通过浏览器访问
http:/localhost:8080/config,显示如下信息,则说明micro-weather-config-cli-ent-bus应用拿到了在配置中心的配置。
waylau.com 1.0.0
源码
本节示例所涉及的源码见
micro-weather-eureka-server、micro-weather-config-server-bus及 micro-weather-config-client-bus。
本篇文章内容给大家讲解的是如何集成BuS
下篇文章给大家讲解的是实现配置信息的自动更新;
觉得文章不错的朋友可以转发此文关注小编;
感谢大家的支持!
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。