0

I have an adapter (written in Spring Boot and Spring Integration) retrieving currency reates from two different sources (via REST and proprietary library). I filter unnecesary things, create instances of class known in my system and send rates to JMS cluster. I want this adapter to be replicated. Only one instance should be running at the same time. When one crashes (I know it from health endpoint) another one should start publishing rates. How can I achieve such effect? I know that available services can be registered using Eureka but how to turn one of them on automatically?

4

2 回答 2

1

该问题的解决方案是使用 spring-cloud-cluster。可以使用 zookeeper 或 hazelcast 来协商领导。在少数情况下,只有一个被赋予领导角色。如果它崩溃了,另一个会扮演它的角色(它通过事件传播得到通知)。您还可以使用 yieldLeadership 方法手动放弃领导权(如果健康指标显示应用程序有问题)。

于 2015-11-30T13:54:18.393 回答
0

如果不知道更多细节,很难给你推荐。

我个人会说 Eureka 不是为您想要实现的目标而构建的。但这听起来更像是你想看看 ZooKeeper。另请参阅Eureka FAQ以供参考。ZooKeeper 正是为实现您想要实现的目标而构建的:领导者选举

另一方面,如果您也可以在服务关闭几秒钟的情况下幸存下来,我建议您使用/health已经监视端点的脚本来重新启动服务,或者使用已经具有此构建的系统,例如SystemdDocker,您可以在其中定义重启策略。

于 2015-11-26T18:10:11.500 回答