碰到一个问题,由于applicaiton服务是多实例,但是前端调接口到后端只会到一台实例上,碰巧deploy回调的时候也会调到一台服务上,如果前端调到A,deploy调到B,页面上永远拿不到信息,碰巧公司取消了MQ,用不了广播模式,只能自己想办法解决了。

使用DiscoveryClient 获取全部的服务实例,然后构建http请求批量调用接口

public void callBack(Long moduleId, Long requestId, String phase, String message) {
        List<ServiceInstance> appInstanceList = discoveryClient.getInstances("service-application");
        for (ServiceInstance application : appInstanceList) {
            log.info("模块:{}, 请求:{} 向实例: {}-{} 调用接口发送信息 ", moduleId, requestId, application.getServiceId(), application.getUri().toString());
            restTemplate.postForObject(application.getUri() + String.format("/modules/%s/publish/%s/callback", moduleId, requestId), publishStateModel, Void.class);
        }
    }