我有一个带有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日志显示正在使用容器网络。
附注:
我尝试使用以下方法重写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应用程序。
您设置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,该文件中的代码是: 我错过了什么?