можем ли мы использовать несколько классов @PlanningSolution и несколько SolverManager в Springboot optaplanner

Для приложения Springboot, использующего optaplanner-spring-boot-starter, решение проблемы облачной балансировки отлично работает с одним решением для планирования и solverManager, аналогичным https://github.com/DuncanDoyle/optaplanner-sbs-cloud-balancing/tree/master/optaplanner-sbs, но когда несколько решений для планирования определяется и вызывается с помощью solverManager, он выдает ошибку

Вызвано: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем 'solverFactory', определенным в ресурсе пути к классу [org / optaplanner / spring / boot / autoconfigure / OptaPlannerAutoConfiguration.class]: неудовлетворенная зависимость, выраженная через решение метода ' параметр 0; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'solverConfig', определенным в ресурсе пути к классу [org / optaplanner / spring / boot / autoconfigure / OptaPlannerAutoConfiguration.class]: создание экземпляра bean-компонента с помощью фабричного метода завершилось неудачно; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.optaplanner.core.config.solver.SolverConfig]: заводской метод solverConfig вызвал исключение; вложенное исключение - java.lang.IllegalStateException: несколько классов ([класс com.test.model.PRCaseAssignment, класс com.test.model.CaseAssignment]) обнаружены с аннотацией @PlanningSolution.

Как мы можем определить несколько классов @PlanningSolution и вызвать их с помощью solverManager, существуют ли какие-либо квалификаторы, которые нужно аннотировать? Любая помощь приветствуется. Спасибо.


person Mahe    schedule 03.09.2020    source источник


Ответы (1)


Могу я спросить, каковы варианты использования нескольких классов решений?

optaplanner-spring-boot-starter поддерживает только одну конфигурацию решателя и, следовательно, только один класс решения. То же самое и с SolverManager API: вы можете отправить в SolverManager несколько задач планирования, но они должны быть одного типа (класс решения) и иметь одну и ту же конфигурацию решателя. Чтобы отправить задачу планирования другого типа, вы должны создать новый экземпляр SolverManager. См. документацию о том, как создать экземпляр SolverManager вручную.

person Radovan Synek    schedule 04.09.2020
comment
Да, это правда, и это пробел в API. Нам нужно найти способ с помощью квалификаторов, позволяющий сосуществовать нескольким SolverConfigs / SolverManager как в Spring Boot, так и в Quarkus. - person Geoffrey De Smet; 04.09.2020
comment
Связанный вопрос того же автора: stackoverflow.com/questions/63712863/ - person Geoffrey De Smet; 04.09.2020