Я построил два разных сервисных разъема для одного сервиса.Если я добавлю оба служебных соединителя в мое приложение, Spring не начнет говорить, что не найдено подходящего служебного соединителя.Я отладил весной и обнаружил, что только один из разъемов добавляется во внутренний список разъемов.Можно ли добавить два разных весенних облачных сервисных соединителя для одного сервиса и использовать их в одном приложении?
Для лучшего понимания примера со службой rabbitMQ.Допустим, я построил два разных коннектора облачных сервисов с CloudFoundryServiceInfoCreator<AMQConnectionInfo>
и CloudFoundryServiceInfoCreator<MQTTConnectionInfo>
.Я хотел бы использовать оба соединителя в приложении (я знаю, что мог бы реализовать обе информации о соединении в одном облачном соединителе Spring, но это не то, что я хотел бы сделать).
edit: Возникает следующее исключение:
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 просто возвращает первый Connector, найденный в этом методе в org.springframework.cloud.AbstractCloudConnector
:
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 или поиск того, который я запрашивал, не так ли?