微服务A,如何调用微服务B的所有节点?

作者站长头像
站长
· 阅读数 11

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

回复
1个回答
avatar
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
        }
    }
}

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