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

无法重写Spring Boot应用程序的HazelCast.yaml中的属性

洪飞驰
2023-03-14

我有一个带有Hazelcast的Spring Boot应用程序(使用4.2,也尝试使用hazelcast-all依赖项的4.0.3)。Hazelcast是为嵌入式拓扑配置的。采用TCP-IP网络连接方式。Hazelcast的属性使用文件Hazelcast.yaml和Spring Boot属性来设置:Spring.Hazelcast.config(默认情况下Spring将此名称用于Hazelcast配置,这是多余的)。

在属性member-list中,我表示一个子网中两台计算机的IP地址(例如192.0.0.1和192.0.0.2)。

问题前提:

我在前面描述的两台机器上运行两个docker容器。我只转发两个容器上的端口5701(使用-p)。和容器互相看不到。Spring Boot日志显示正在使用容器网络。

附注:

    null

我尝试使用以下方法重写HazelCast.yaml中的属性public-address

  • Docker运行-e hz_network_publicaddress=192.0.0.1
  • 导出hz_network_publicaddress=192.0.0.1&&docker运行
  • java_opts=“-dhz.network.public-address=192.0.0.1”
  • java_opts=“-dhazelcast.local.publicaddress=192.0.0.1”
  • java_opts=“-dhazelcast.config=/mnt/overrided_hazelcast.yaml”
  • env hz_network_publicaddress=192.0.0.1-在DockerFile中
  • 入口点java-jar-dhz.network.public-address=192.0.0.1 my-app.jar

什么都不起作用。有人知道为什么不能在启动时重写HazelCast.yaml中的属性publight-address吗?

或者可能有人知道我如何在不同的机器上运行两个嵌入了Docker容器中的Hazelcast的Spring Boot应用程序。

共有1个答案

崔单弓
2023-03-14

您设置Hazelcast公共地址的方式是正确的,至少从添加了配置覆盖特性的Hazelcast 4.1开始。

要检查工作版本,可以看看Hazelcast指南:在Kubernetes上嵌入Hazelcast。您可以使用TCP-IP来代替Hazelcast Kubernetes配置。下面的Hazelcast配置对我起作用(我的主机IP是172.22.41.210)。

hazelcast:
  cluster-name: hazelcast-cluster
  network:
    join:
      tcp-ip:
        enabled: true
        member-list:
          - 172.22.41.210:5701
          - 172.22.41.210:5702

然后,构建和启动两个应用程序应该形成一个集群。

$ mvn package && docker build -t hazelcast-embedded .
$ docker run --rm -e HZ_NETWORK_PUBLICADDRESS=172.22.41.210 -p 5701:5701 hazelcast-embedded
$ docker run --rm -e HZ_NETWORK_PUBLICADDRESS=172.22.41.210:5702 -p 5702:5701 hazelcast-embedded

您应该看到集群是在应用程序日志中形成的。

Members {size:2, ver:2} [
        Member [172.22.41.210]:5701 - 21af9e1a-7e98-4305-905c-451ee23486c3 this        
        Member [172.22.41.210]:5702 - 0507d970-1f31-4df3-9ea5-8c3981eb7c98     
]
 类似资料:
  • 我的程序编译了所有内容,我没有出错,但我实际上期望tomcat应该永久在端口8080上。输出中也没有Spring。在另一个项目中,我做的一切都很好。谢谢你帮助我。 我的父母: 我的tarter.class: 我的Starter-Pom: 控制台输出: 然后什么都不会发生了。谢谢你的帮助。

  • 在unix中,我以以下方式运行jar java-jar$classpath--spring.config.location=application.yml 我认为通过命令行提供的属性具有最高的优先级(从下面的链接),那么为什么使用来自DATASERVICE_PROPERTIES的server.port呢? Spring Boot和多个外部配置文件

  • 我在src/main/resources下创建了2个文件: 应用程序。属性 第一个具有从env变量中获取值的属性,而后者具有固定值。 根据这里的具体情况,我以这样的方式推出了Spring靴: 然而,不会产生任何影响,并且应用程序是局部的。属性似乎被忽略。 有什么提示吗?

  • 我的spring boot应用程序中目前只有两个类。第一个是main主引导应用程序类,另一个是服务类。我在应用程序类中声明了如下属性源文件: 其他类是FTPService,其中属性值in使用@value,如下所示: 它打印空。也尝试用下面的注释来注释FTPService,但不起作用。尝试将属性复制到Application.properties,但不起作用。 我的属性文件在src/main/reso

  • 我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud

  • 这是我使用SpringBoot的第一天,我试图理解体系结构,因此我开始构建一个hello world应用程序: 在我的pom.xml中,在maven-shade-plugin下,我将mainClass声明如下: 文件目标是src/main/java/com/demo/helloworld.java,该文件中的代码是: 我错过了什么?