当前位置: 首页 > 知识库问答 >
问题:

Spring配置服务器似乎没有通知总线

屠盛
2023-03-14

我使用的是Spring 2.0.1。使用spring云总线发布并安装所有项目(2个服务和云配置服务器)

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>

配置服务器还具有spring云配置监视器

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-monitor</artifactId>
    </dependency>

我在我的Git reposroty中编辑文件(使用具有Spring Cloud Config本机配置文件的本地文件)。检测到更改,我在Cloud Config Server中看到以下行:

17:59:25.201 [task-scheduler-3] INFO  o.s.cloud.bus.event.RefreshListener - Received remote refresh request. Keys refreshed [version.client.min]

但是,其他服务都不会收到有关更新密钥的通知。

另一方面,如果我手动调用任何其他服务的bus刷新endpoint,我会看到所有模块都收到更新的密钥。配置服务器本身也会收到通知,但它说没有更新密钥,这是有意义的,因为它已经检测到更改。

文档中没有提到要与RabbitMQ属性区分开来的任何特殊属性(由于总线刷新endpoint按预期工作,因此这些属性似乎配置得很好)

我看到已经有一些关于这个的帖子了,其中一个甚至指向一个标记为已解决的bug(https://github.com/spring-cloud/spring-cloud-bus/issues/101)但这似乎对我不起作用。

要启用配置服务器通知总线的任何属性?关于如何调试它的任何提示?

共有2个答案

龚俊捷
2023-03-14

所以有一些第一手资料:如果您正在使用(在您的云配置项目中),

<代码>

然后,低于2.4.1的Spring Boot版本(在同一项目中)将不会在其默认依赖项下启动云配置服务器。

因此,如果您使用的是上述版本,可能还有上述版本,

那么对于需要通过云总线更新的项目(例如使用bootstrap.properties)应该包含Starter Bootstrap依赖项(当然还有cloud d-starter-configbus-amqp依赖项)

<!--    Spring Cloud Config + Cloud Bus + Bootstrap-->

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

另外,请检查Spring cloud版本是否为2020.0.0-M6或Hoxton。BUILD-SNAPSHOT取决于您使用的Spring Boot版本。下面是一个屏幕截图,显示哪些Spring云版本与哪些Spring Boot版本兼容

v v v v v v v

梁丘威
2023-03-14

轻松修复(经过大量研究!)更改了组织的所有依赖项。springframework。芬奇利的云。M9至2.0.0。突然,一切都开始运转了!

 类似资料:
  • 我已经从spring的initialzr生成了一个Spring Boot配置服务器。 我已经用brew安装了rabbitmq。initialzr是使用启动版本2.1.1.RELEASE和云版本Greenwich.M3生成的。 简单的rest服务连接到rabbitmq队列。配置服务器连接到gitlab配置报告。 但是,当我提交并推送更改时,服务应用程序不会反映该更改。推送完成后,配置服务器将收到日志

  • 当浏览器从服务器请求图像时,后端的API控制器将接收该调用。在那里,在返回映像之前必须进行授权检查,以检查请求是否被允许。 所以我需要添加授权头,当搜索最佳解决方案时,我发现了这篇文章:https://www.twelve21.io/how-to-access-images-securely-with-oauth-2-0/,我对使用Service Worker的解决方案4非常感兴趣。 我自己实现了

  • 我一直在尝试掌握位于此处的spring boot config服务器:https://github.com/spring-cloud/spring-cloud-config在更彻底地阅读了文档之后,我能够解决我的大部分问题。然而,我不得不为基于文件的PropertySourceLocator编写一个额外的类 然后我将其添加到ConfigServiceBootstrapConfiguration.j

  • 我正在使用Spring Cloud Config服务器,能够检测来自git存储库的更改并将其传递给配置客户机。 有两种方法,我已经实现了: null 所以两者都工作得很好,那么使用Spring Cloud Bus有什么好处吗?或者在生产环境中,不使用Spring Cloud Bus会有什么问题吗?因为将需要额外的工作来设置RabbitMQ集群(HA)作为生产中的Spring云总线。 谢谢,大卫

  • 我正在尝试在运行时重新加载应用程序的配置。配置位于yaml文件中,与ConfigurationProperties的绑定按预期工作。接下来就是。我想在yaml更改后重新加载配置。或者更确切地说,我正在使用预定的检查文件是否已更改。 我希望避免运行第二台服务器来更新我的环境。我有两个问题: 如何更新环境,也许? 我如何传播这些? Spring云配置文档说明: 只要您能够实际更改环境并发布事件,Env

  • 我们来看看如何配置服务器端的 SSH 访问。 本例中,我们将使用 authorized_keys 方法来对用户进行认证。 同时我们假设你使用的操作系统是标准的 Linux 发行版,比如 Ubuntu。 首先,创建一个操作系统用户 git,并为其建立一个 .ssh 目录。 $ sudo adduser git $ su git $ cd $ mkdir .ssh && chmod 700 .ssh