我为一项服务构建了两个不同的服务连接器。如果我将两个服务连接器都添加到我的应用程序中,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列表或搜索我请求的列表,会很好吗?