iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >SpringCloud Bus组件如何使用
  • 353
分享到

SpringCloud Bus组件如何使用

2023-06-29 12:06:10 353人浏览 安东尼
摘要

本文小编为大家详细介绍“SpringCloud Bus组件如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“springCloud Bus组件如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习

本文小编为大家详细介绍“SpringCloud Bus组件如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“springCloud Bus组件如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

什么是Bus

0.解释

  • https://spring.io/projects/spring-cloud-bus

  • sprinGCloudbus使用轻量级消息代理将分布式系统的节点连接起来。然后,可以使用它来广播状态更改(例如配置更改)或其他管理指令。AMQP和kafka broker实现包含在项目中。或者,在类路径上找到的任何springcloudstream绑定器都可以作为传输使用。

  • 通俗定义: bus称之为springcloud中消息总线,主要用来在微服务系统中实现远端配置更新时通过广播形式通知所有客户端刷新配置信息,避免手动重启服务的工作

实现配置刷新原理

SpringCloud Bus组件如何使用

搭建RabbitMQ服务

0.下载rabbitmq安装包 [可以直接使用Docker安装更方便] 官方安装包下载:Https://www.rabbitmq.com/install-rpm.html#downloads
[注意:][这里安装包只能用于Centos7.x系统]

SpringCloud Bus组件如何使用

将rabbitmq安装包上传到linux系统中

erlang-22.0.7-1.el7.x86_64.rpmrabbitmq-server-3.7.18-1.el7.noarch.rpm

安装Erlang依赖包

rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

安装RabbitMQ安装包(需要联网)

yum install -y rabbitmq-server-3.7.18-1.el7.noarch.rpm注意:默认安装完成后配置文件模板在:/usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example目录中,需要将配置文件复制到/etc/rabbitmq/目录中,并修改名称为rabbitmq.config

复制配置文件

cp /usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

查看配置文件位置

ls /etc/rabbitmq/rabbitmq.config

修改配置文件(参见下图:)

vim /etc/rabbitmq/rabbitmq.config

SpringCloud Bus组件如何使用

将上图中配置文件中红色部分去掉%%,以及最后的,逗号 修改为下图:

SpringCloud Bus组件如何使用

执行如下命令,启动rabbitmq中的插件管理

rabbitmq-plugins enable rabbitmq_management出现如下说明:Enabling plugins on node rabbit@localhost:rabbitmq_managementThe following plugins have been configured:  rabbitmq_management  rabbitmq_management_agent  rabbitmq_WEB_dispatchApplying plugin configuration to rabbit@localhost...The following plugins have been enabled:  rabbitmq_management  rabbitmq_management_agent  rabbitmq_web_dispatchset 3 plugins.Offline change; changes will take effect at broker restart.

启动RabbitMQ的服务

systemctl start rabbitmq-serversystemctl restart rabbitmq-serversystemctl stop rabbitmq-server

查看服务状态(见下图:)

systemctl status rabbitmq-server

● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
Active: active (running) since 三 2019-09-25 22:26:35 CST; 7s aGo
Main PID: 2904 (beam.smp)
Status: “Initialized”
CGroup: /system.slice/rabbitmq-server.service
├─2904 /usr/lib64/erlang/erts-10.4.4/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -
MBlmbcs…
├─3220 erl_child_setup 32768
├─3243 inet_gethost 4
└─3244 inet_gethost 4
…

SpringCloud Bus组件如何使用

关闭防火墙服务

systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.systemctl stop firewalld

访问web管理界面

http://10.15.0.8:15672/    

SpringCloud Bus组件如何使用

登录管理界面

username:  guestpassWord:  guest![](https://img-blog.csdnimg.cn/8e49b6d997cd47ef8e79128841f08321.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQXJvZw==,size_20,color_FFFFFF,t_70,g_se,x_16)

MQ服务搭建成功

实现自动配置刷新

在所有项目中引入bus依赖

<!--引入bus依赖--><dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency>

配置统一配置中心连接到mq

spring.rabbitmq.host=localhost#连接主机spring.rabbitmq.port=5672#连接mq端口spring.rabbitmq.username=user#连接mq用户名spring.rabbitmq.password=password#连接mq密码

远端配置中加入连接mq配置

SpringCloud Bus组件如何使用

启动统一配置中心服务 正常启动

SpringCloud Bus组件如何使用

启动客户端服务 加入bus组件之后客户端启动报错原因springcloud中默认链接不到远程服务器不会报错,但是在使用bus消息总线时必须开启连接远程服务失败报错

SpringCloud Bus组件如何使用

spring.cloud.config.fail-fast=true

SpringCloud Bus组件如何使用

修改远程配置后在配置中心服务通过执行post接口刷新配置 curl -X POST http://localhost:7878/actuator/bus-refresh

SpringCloud Bus组件如何使用

通过上述配置就实现了配置统一刷新

指定服务刷新配置

说明

  • 默认情况下使用curl -X POST http://localhost:7878/actuator/bus-refresh这种方式刷新配置是全部广播形式,也就是所有的微服务都能接收到刷新配置通知,但有时我们修改的仅仅是某个服务的配置,这个时候对于其他服务的通知是多余的,因此就需要指定服务进行通知

指定服务刷新配置实现

  • 指定端口刷新某个具体服务: curl -X POST http://localhost:7878/actuator/bus-refresh/configclient:9090

  • 指定服务id刷新服务集群节点: curl -X POST http://localhost:7878/actuator/bus-refresh/configclient

[注意:][configclient代表刷新服务的唯一标识]

集成webhook实现自动刷新

配置webhooks

  • 添加webhooks

  • 在webhooks中添加刷新配置接口

SpringCloud Bus组件如何使用

内网穿透可以使用natapp进行穿透,本地一个穿透免费穿透,https://natapp.cn/ 步骤非常简单。然后将穿透的地址放入到所需地址栏即可。

SpringCloud Bus组件如何使用

解决400错误问题

  • 在配置中心服务端加入过滤器进行解决(springcloud中一个坑)

@Componentpublic class UrlFilter  implements Filter {    @Override    public void init(FilterConfig filterConfig) throws ServletException {     }    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        HttpServletRequest httpServletRequest = (HttpServletRequest)request;        HttpServletResponse httpServletResponse = (HttpServletResponse)response;        String url = new String(httpServletRequest.getRequestURI());        //只过滤/actuator/bus-refresh请求        if (!url.endsWith("/bus-refresh")) {            chain.doFilter(request, response);            return;        }        //获取原始的body        String body = readAsChars(httpServletRequest);        System.out.println("original body:   "+ body);        //使用HttpServletRequest包装原始请求达到修改post请求中body内容的目的        CustometRequestWrapper requestWrapper = new CustometRequestWrapper(httpServletRequest);        chain.doFilter(requestWrapper, response);    public void destroy() {    private class CustometRequestWrapper extends HttpServletRequestWrapper {        public CustometRequestWrapper(HttpServletRequest request) {            super(request);        @Override        public ServletInputStream getInputStream() throws IOException {            byte[] bytes = new byte[0];            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);            return new ServletInputStream() {                @Override                public boolean isFinished() {                    return byteArrayInputStream.read() == -1 ? true:false;                }                public boolean isReady() {                    return false;                public void setReadListener(ReadListener readListener) {                public int read() throws IOException {                    return byteArrayInputStream.read();            };    public static String readAsChars(HttpServletRequest request)    {        BufferedReader br = null;        StringBuilder sb = new StringBuilder("");        try        {            br = request.getReader();            String str;            while ((str = br.readLine()) != null)            {                sb.append(str);            }            br.close();        catch (IOException e)            e.printStackTrace();        finally            if (null != br)                try                {                    br.close();                catch (IOException e)                    e.printStackTrace();        return sb.toString();}

SpringCloud Bus组件如何使用

读到这里,这篇“SpringCloud Bus组件如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: SpringCloud Bus组件如何使用

本文链接: https://www.lsjlt.com/news/324566.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringCloud Bus组件如何使用
    本文小编为大家详细介绍“SpringCloud Bus组件如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud Bus组件如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-06-29
  • SpringCloud Bus组件的使用配置详解
    目录什么是Bus搭建RabbitMQ服务实现自动配置刷新指定服务刷新配置集成webhook实现自动刷新什么是Bus 0.解释 https://spring.io/projects/s...
    99+
    2024-04-02
  • SpringCloud中如何使用Sentinel哨兵组件
    这篇文章给大家介绍SpringCloud中如何使用Sentinel哨兵组件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、概念描述Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务...
    99+
    2023-06-02
  • SpringCloud中Ribbon和Feign组件如何使用
    SpringCloud中Ribbon和Feign组件如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、Ribbon简介1、基本概念Ribbon是一个客户...
    99+
    2023-06-02
  • SpringCloud Gateway路由组件怎么使用
    这篇文章主要介绍“SpringCloud Gateway路由组件怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringCloud Gateway路由组件怎么使用”文章...
    99+
    2023-07-05
  • 如何使用spring cloud Bus刷新配置
    如何使用spring cloud Bus刷新配置,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。当我们的业务系统越来越庞大复杂的时候,各种配置也会随之增多。配置文件只要一修改,会...
    99+
    2023-06-05
  • springcloud的常用组件有哪些
    Spring Cloud是一个分布式系统的开发工具包,它提供了一系列常用组件来帮助开发者构建高可用的、可伸缩的分布式系统。常用的Sp...
    99+
    2023-10-20
    springcloud
  • Java之Springcloud Feign组件怎么用
    这篇文章主要介绍Java之Springcloud Feign组件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、Feign是什么?OpenFeign是Spring Cloud提供的一个声明式的伪Hltp客户端...
    99+
    2023-06-20
  • 如何正确的使用springcloud
    这期内容当中小编将会给大家带来有关如何正确的使用springcloud,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、微服务简介 Ⅰ、我对微服务的理解微服务是软件开发的一种架构方式,由单一的应用小程序构...
    99+
    2023-06-14
  • 如何使用Raft组件
    这篇文章主要讲解了“如何使用Raft组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Raft组件”吧!一、编译github下载 Ratis 直接 ...
    99+
    2024-04-02
  • dialog组件如何使用
    这篇文章主要讲解了“dialog组件如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“dialog组件如何使用”吧! <template>...
    99+
    2024-04-02
  • React组件如何使用
    本篇内容主要讲解“React组件如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React组件如何使用”吧!组件的定义:理解:用来实现局部功能效果的代码和资源的集合(html/css/js...
    99+
    2023-07-05
  • Vue2与Vue3兄弟组件通讯bus的区别及用法
    目录vue2.xvue3.xtiny-emitter插件用法mitt插件用法vue2.x Vue.prototype.$bus=new Vue() 监听: this...
    99+
    2024-04-02
  • bootstrap组件中如何使用导航组件
    这篇文章主要介绍了bootstrap组件中如何使用导航组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Bootstrap 中的导航组件都依...
    99+
    2024-04-02
  • android navigation组件如何使用
    Android Navigation组件是一套可以帮助开发者轻松实现应用程序导航功能的框架。下面是使用Android Navigat...
    99+
    2023-10-09
    Android navigation
  • SimpleFramework中如何使用组件
    这篇文章主要讲解了“SimpleFramework中如何使用组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SimpleFramework中如何使用组件”吧!描述文件的位置XML描述文件的...
    99+
    2023-06-17
  • SpringCloud Hystrix熔断器如何使用
    本文小编为大家详细介绍“SpringCloud Hystrix熔断器如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud Hystrix熔断器如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-05
  • Unity3D AudioSource组件如何使用
    这篇文章主要介绍了Unity3D AudioSource组件如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Unity3D AudioSource组件如何使用文章都会有所收获,下面我们...
    99+
    2023-07-05
  • vue3 table组件如何使用
    今天小编给大家分享一下vue3 table组件如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基础表格首先开发tabl...
    99+
    2023-07-06
  • Android ProgressBar组件如何使用
    Android ProgressBar是一个显示进度的组件,可以用于展示任务的进度,比如下载文件的进度、上传文件的进度等。使用Pro...
    99+
    2023-08-12
    Android ProgressBar
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作