ConfigurableMongoDbMessageStore Не удалось создать экземпляр [org.springframework.messaging.support.GenericMessage] - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь использовать ConfigurableMongoDbMessageStore в качестве хранилища сообщений в моем компоненте агрегатора пружинной интеграции. По какой-то причине выбрасывается следующее исключение:

Caused by: org.springframework.data.mapping.model.MappingInstantiationException: Failed to instantiate org.springframework.messaging.support.GenericMessage using constructor NO_CONSTRUCTOR with arguments 
    at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:67)
    at org.springframework.data.convert.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:84)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:272)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:245)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1491)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter$MongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1389)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter$AssociationAwareMongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1438)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter$AssociationAwareMongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1401)
    at org.springframework.data.mapping.model.PersistentEntityParameterValueProvider.getParameterValue(PersistentEntityParameterValueProvider.java:71)
    at org.springframework.data.mapping.model.SpELExpressionParameterValueProvider.getParameterValue(SpELExpressionParameterValueProvider.java:49)
    at org.springframework.data.convert.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.extractInvocationArguments(ClassGeneratingEntityInstantiator.java:250)
    at org.springframework.data.convert.ClassGeneratingEntityInstantiator$EntityInstantiatorAdapter.createInstance(ClassGeneratingEntityInstantiator.java:223)
    at org.springframework.data.convert.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:84)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:272)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:245)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:194)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:190)
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:78)
    at org.springframework.data.mongodb.core.MongoTemplate$ReadDocumentCallback.doWith(MongoTemplate.java:3017)
    at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:2673)
    at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:2404)
    at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:2387)
    at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:823)
    at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:772)
    at org.springframework.integration.mongodb.store.ConfigurableMongoDbMessageStore.getMessageGroup(ConfigurableMongoDbMessageStore.java:115)
    at org.springframework.integration.mongodb.store.ConfigurableMongoDbMessageStore.addMessageToGroup(ConfigurableMongoDbMessageStore.java:138)
    at org.springframework.integration.aggregator.AbstractCorrelatingMessageHandler.store(AbstractCorrelatingMessageHandler.java:757)
    at org.springframework.integration.aggregator.AbstractCorrelatingMessageHandler.handleMessageInternal(AbstractCorrelatingMessageHandler.java:479)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:162)
    ... 83 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.messaging.support.GenericMessage]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.messaging.support.GenericMessage.<init>()
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:129)
    at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:64)
    ... 111 common frames omitted
Caused by: java.lang.NoSuchMethodException: org.springframework.messaging.support.GenericMessage.<init>()
    at java.base/java.lang.Class.getConstructor0(Class.java:3350)
    at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2554)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:122)
    ... 112 common frames omitted

Бин создается и используется следующим образом:

In SpringIntegrationBeans.java

    @Autowired
    private MongoTemplate mongoTemplate;

    @Bean(name = "configurableMongoDbMessageStore")
    public ConfigurableMongoDbMessageStore configurableMongoDbMessageStore() {
        return new ConfigurableMongoDbMessageStore(mongoTemplate);
    }

In spring-integration.xml
        <int:aggregator id="myAggregator"
                        ref="testingAggregator"
                        message-store="configurableMongoDbMessageStore"/>

Я использую следующий пакет spring -gration-mongodb:

    <dependency>
      <groupId>org.springframework.integration</groupId>
      <artifactId>spring-integration-mongodb</artifactId>
      <version>5.1.2.RELEASE</version>
    </dependency>

Я нашел похожие вопросы и ответы в Spring Integration Aggregator с MongoDbMessageStore: не удалось создать экземпляр GenericMessage: не найден конструктор по умолчанию , но, похоже, он применим для MongoDbMessageStore, а не ConfigurableMongoDbMessageStore

Буду признателен за любую помощь / совет.

1 Ответ

0 голосов
/ 20 мая 2019

Для шаблона монго требуется правильно сконфигурированный конвертер;Вместо этого введите фабрику БД, и магазин создаст соответствующий шаблон.

@Autowired
private MongoDbFactory dbFactory;

@Bean(name = "configurableMongoDbMessageStore")
public ConfigurableMongoDbMessageStore configurableMongoDbMessageStore() {
    return new ConfigurableMongoDbMessageStore(dbFactory);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...