一项服务的多个Spring Cloud Service连接器

时间:2019-03-06 19:16:08

标签: spring spring-boot spring-cloud spring-cloud-connectors

我为一项服务构建了两个不同的服务连接器。如果我将两个服务连接器都添加到我的应用程序中,Spring将不会开始说找不到合适的服务连接器。我调试进入spring,发现只有一个连接器被添加到内部连接器列表中。是否可以为一个服务添加两个不同的spring cloud服务连接器并在一个应用程序中使用它们?

为了更好地理解RabbitMQ服务的示例。假设我已经用CloudFoundryServiceInfoCreator<AMQConnectionInfo>CloudFoundryServiceInfoCreator<MQTTConnectionInfo>构建了两个不同的Cloud Service连接器。我想在应用程序中使用两个连接器(我知道我可以在一个弹簧云连接器中实现两个连接信息,但这不是我想要做的)。

编辑: 引发以下异常:

org.springframework.cloud.CloudException: No unique service matching class .... found. Expected 1, found 0
    at org.springframework.cloud.Cloud.getSingletonServiceConnector(Cloud.java:149)

我也尝试使用cloud.getServiceConnector(id, class, null);

我还刚刚发现,Spring Cloud Connectors仅返回在org.springframework.cloud.AbstractCloudConnector的此方法中找到的第一个Connector:

private ServiceInfo getServiceInfo(SD serviceData) {
        for (ServiceInfoCreator<? extends ServiceInfo,SD> serviceInfoCreator : serviceInfoCreators) {
            if (serviceInfoCreator.accept(serviceData)) {
                return serviceInfoCreator.createServiceInfo(serviceData);
            }
        }

        // Fallback with a warning
        ServiceInfo fallackServiceInfo = getFallbackServiceInfoCreator().createServiceInfo(serviceData);
        logger.warning("No suitable service info creator found for service " + fallackServiceInfo.getId()
                + " Did you forget to add a ServiceInfoCreator?");
        return fallackServiceInfo;
    }

我认为如果返回合适的ServiceInfoCreator列表或搜索我请求的列表,会很好吗?

0 个答案:

没有答案