前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud微服务架构开发实战:如何集成BuS?

SpringCloud微服务架构开发实战:如何集成BuS?

作者头像
愿天堂没有BUG
发布2022-10-28 16:18:53
2580
发布2022-10-28 16:18:53
举报

如何集成 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。

代码语言:javascript
复制
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。同时,增加如下配置。

代码语言:javascript
复制
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”可得如下结果,即证明安装是正确的。

代码语言:javascript
复制
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服务器作为一个应用

执行下面指令来启动。

代码语言:javascript
复制
rabbitmg-server -detached

或者直接双击rabbitmq-server.bat脚本。

控制台将输出如下。

代码语言:javascript
复制
####
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应用使用。

代码语言:javascript
复制
auther=waylau.com
version=1.0.0

修改 micro-weather-config-client-bus应用,在应用中增加一个VersionController.java,用于演示如何从配置中心实时获取配置信息。VersionController.java 代码如下。

代码语言:javascript
复制
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 <a href="https://waylau.com">Way Lau</a>
*/
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应用拿到了在配置中心的配置。

代码语言:javascript
复制
waylau.com 1.0.0

源码

本节示例所涉及的源码见 micro-weather-eureka-server、micro-weather-config-server-bus及 micro-weather-config-client-bus。

本篇文章内容给大家讲解的是如何集成BuS

  1. 下篇文章给大家讲解的是实现配置信息的自动更新;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 愿天堂没有BUG 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何集成 BuS
  • 初始化应用
  • 所需环境
  • 更改配置
  • 下载安装RabbitMQ
  • 修改micro-weather-config-client-bus
  • 运行、测试
  • 源码
  • 本篇文章内容给大家讲解的是如何集成BuS
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档