UPDATE
此repo中的README 已更新,以在接受的答案中演示解决方案.
我正在使用基于本指南的Spring Boot Eureka服务注册和发现的简单示例.
如果我启动一个客户端实例,它会正确注册,并且可以通过它看到自己DiscoveryClient.如果我使用不同的名称启动第二个实例,它也可以正常工作.
但是,如果我启动两个具有相同名称的实例,则仪表板仅显示1个正在运行的实例,并且DiscoveryClient仅显示第二个实例.
当我杀死第二个实例时,第一个实例再次通过仪表板和发现客户端可见.
以下是我正在采取的步骤以及我所看到的步骤的更多细节:
尤里卡服务器
启动服务器
cd eureka-server
mvn spring-boot:run
Run Code Online (Sandbox Code Playgroud)
访问位于http:// localhost:8761的Eureka仪表板
请注意,尚未注册"实例"
尤里卡客户
启动客户端
cd eureka-client
mvn spring-boot:run
Run Code Online (Sandbox Code Playgroud)
直接访问客户端http:// localhost:8080 /
该/whoami终端将展示其应用程序名称和端口的客户端的自知之明
{
"springApplicationName":"eureka-client",
"serverPort":"8080"
}
Run Code Online (Sandbox Code Playgroud)
该/instances端点将需要长达一分钟更新,但最终应显示的所有实例eureka-client已与尤里卡发现客户端注册.
[
{
"host":"hostname",
"port":8080,
"serviceId":"EUREKA-CLIENT",
"uri":"http://hostname:8080",
"secure":false
}
]
Run Code Online (Sandbox Code Playgroud)
您现在也可以再次访问Eureka dashoboard,并在那里看到它.
使用其他名称启动另一个客户端
您可以通过执行以下操作看到另一个客户端将被注册:
cd eureka-client
mvn spring-boot:run -Dspring.application.name=foo -Dserver.port=8081
Run Code Online (Sandbox Code Playgroud)
该/whoami终端将显示名称foo和端口8081.
在一分钟左右,/instances端点也将显示有关此foo …
在Ruby Koans中,about_open_classes.rb最后的测试是这样的:
class ::Integer
def even?
(self % 2) == 0
end
end
def test_even_existing_built_in_classes_can_be_reopened
assert_equal true, 1.even?
assert_equal false, 2.even?
end
Run Code Online (Sandbox Code Playgroud)
似乎def even?没有做任何事情; 如果我改变方法,它似乎不起作用:
class ::Integer
def even?
(self % 2) != 0
end
end
Run Code Online (Sandbox Code Playgroud)
测试仍然成功.
我认为这是因为even已经在Ruby中定义了.那是对的吗?为什么会这样?