微服务A,如何调用微服务B的所有节点?
springcloud微服务,其中A服务部署了一套,B服务部署了两套,A服务如何同时请求两个B服务。使用的是Feign进行服务间的调用,请写出详细的代码实现
回复
1个回答

test
2024-07-01
import com.netflix.discovery.EurekaClient;
import com.netflix.discovery.shared.Application;
import com.netflix.discovery.shared.InstanceInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@Service
public class ServiceAClient {
@Autowired
private EurekaClient eurekaClient;
@Autowired
private RestTemplate restTemplate;
public void callServiceB() {
Application application = eurekaClient.getApplication("service-b");
List<InstanceInfo> instances = application.getInstances();
for (InstanceInfo instance : instances) {
String url = "http://" + instance.getIPAddr() + ":" + instance.getPort() + "/api/endpoint";
String response = restTemplate.getForObject(url, String.class);
// Process the response
}
}
}
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容