Пружинный ботинок с монго от axonIQ 3 до 4 - PullRequest
0 голосов
/ 19 марта 2019

Итак, я пытался перевести мой модуль с использования axonIQ 3.4 на 4.1, я использую mongodb для сохранения событий, а не сервер аксонов.

В аксоне 3 вам не нужно использоватьсервер аксонов, тогда как в 4-й версии это будет по умолчанию, если вы не исключите его ЯВНО в вашем pom / build.gradle

compile('org.axonframework:axon-spring-boot-starter:4.1') {
    exclude group: 'org.axonframework', module: 'axon-server-connector'
}

Я перешел на новые расширения mongo, так как старая библиотека устарела

compile group: 'org.axonframework.extensions.mongo', name: 'axon-mongo', version: '4.1'

Я также использую следующий код (как упомянуто в их руководствах) для хранения событий

@Bean
public EventStorageEngine storageEngine(MongoClient client) {
    return MongoEventStorageEngine.builder().mongoTemplate(DefaultMongoTemplate.builder().mongoDatabase(client).build()).build();
}

При попытке запустить приложение я получаю следующую ошибку(даже перед попыткой запустить какое-либо событие)

java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy для sun.reflect.annotation.AnnotationParser.parseClassArray (AnnotationParser.java:724)na: 1.8.0_141] at sun.reflect.annotation.AnnotationParser.parseArray (AnnotationParser.java:531) ~ [na: 1.8.0_141] at sun.reflect.annotation.AnnotationParser.parseMemberValue (АннотацияParser.java:355) ~ [na: 1.8.0_141] в sun.reflect.annotation.AnnotationParser.parseAnnotation2 (AnnotationParser.java:286) ~ [na: 1.8.0_141] в sun.reflect.annotation.AnnotationParser.parseAnotes (AnnotationParser.java:120) ~ [na: 1.8.0_141] в sun.reflect.annotation.AnnotationParser.parseAnnotations (AnnotationParser.java:72) ~ [na: 1.8.0_141] в java.lang.reflect.Executable.declaredAnnotations (Executable.java:599) ~ [na: 1.8.0_141] в java.lang.reflect.Executable.declaredAnnotations (Executable.java:597) ~ [na: 1.8.0_141] в java.lang.reflect.Executable.getDeclaredAnnotations (Executable.java:588) ~ [na: 1.8.0_141] в java.lang.reflect.Method.getDeclaredAnnotations (Method.java:630) ~ [na: 1.8.0_141] в java.lang.reflect.AccessibleObject.getAnnotations (AccessibleObject.java:207) ~ [na: 1.8.0_141] в org.axonframework.common.annotation.AnnotationUtils.getAnnotation (AnnotationUtils.java:130) ~ [axon-messaging-4.1.jar: 4.1] в org.axonframework.common.annotation.AnnotationUtils.findAnnotationAttributes (AnnotationUtils.java:76) ~ [axon-messaging-4.1.jar: 4.1] в org.axonframework.common.annotation.AnnotationUtils.findAnnotationAttributes (AnnotationUtils.java:110) ~ [axon-messaging-4.1.jar: 4.1] вorg.axonframework.spring.config.SpringAxonAutoConfigurer.lambda $ null $ 40 (SpringAxonAutoConfigurer.java:255) ~ [axon-spring-4.1.jar: 4.1] в java.util.stream.ReferencePipeline $ 3 $ 1.accept (ReferencePipeline.jpg: Referenceava.j193) ~ [na: 1.8.0_141] в java.util.LinkedList $ LLSpliterator.tryAdvance (LinkedList.java:1249) ~ [na: 1.8.0_141] в java.util.stream.ReferencePipeline.forEachWithCancel (ReferencePipeline.java:126) ~ [na: 1.8.0_141] в java.util.stream.AbstractPipeline.copyIntoWithCancel (AbstractPipeline.java:498) ~ [na: 1.8.0_141] в java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:485) ~ [na: 1.8.0_141] в java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:471) ~ [na: 1.8.0_141] в java.util.stream.MatchOps $ MatchOp.evaluateSequential (MatchOps.java: 230) ~ [na: 1.8.0_141] на java.util.stream.MatchOps $ MatchOp.evaluateSequential (MatchOps.java:196) ~ [na: 1.8.0_141] в java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234) ~ [na: 1.8.0_141] в java.util.stream.ReferencePipeline.anyMatch (ReferencePipeline.java:449) ~ [na: 1.8.0_141] в org.axonframework.spring.config.SpringAxonAutoConfigurer.lambda $ registerEventHandlerRegistrar $ 42 (SpringAxonAutoConfigurer.java:25: весна):jar: 4.1] в java.util.Iterator.forEachRemaining (Iterator.java:116) ~ [na: 1.8.0_141] в org.axonframework.spring.config.SpringAxonAutoConfigurer.registerEventHandlerRegistrar (SpringAxonAutoConfjj)spring-4.1.jar: 4.1] в org.axonframework.spring.config.SpringAxonAutoConfigurer.registerBeanDefinitions (SpringAxonAutoConfigurer.java:214)~ [axon-spring-4.1.jar: 4.1] в org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda $ loadBeanDefinitionsFromRegistrars $ 1 (ConfigurationClassBeanDefinitionReader.java:358) ~ пружина: 5.0E. 5.0.7.7.RELEASE] в java.util.LinkedHashMap.forEach (LinkedHashMap.java:684) ~ [na: 1.8.0_141] в org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromReefeBegin.Registcontext-5.0.7.RELEASE.jar: 5.0.7.RELEASE] at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass (ConfigurationClassBeanDefinitionReader.java:145) ~ jREL: 5.0.7....7.RELEASE] at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions (ConfigurationClassBeanDefinitionReader.java:117) ~ [spring-context-5.0.7.RELEASE.jar: 5.0.7.RELEprg или.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions (ConfigurationClassPostProcessor.java:328) ~ [spring-context-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в org.springframework.context.annotation.ConfigurationClassPostProefan.PlaySourcePcessPorcessPorcess.post_set_set_setup_setup) ~ [spring-context-5.0.7.RELEASE.jar: 5.0.7.RELEASE] по адресу org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors (PostProcessorRegistrationDelegate.java:-5.0- [7.7] [.RELEASE.jar: 5.0.7.RELEASE] в org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors (PostProcessorRegistrationDelegate.java:93) ~ [spring-context-5.0.7.RELEASE.jE:.org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors (AbstractApplicationContext.java:694) ~ [spring-context-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в org.springframework.ppAb.bestcationContext.refresh (AbstractApplicationContext.java:532) ~ [spring-context-5.0.7.RELEASE.jar: 5.0.7.RELEASE] в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refreshServlet.Ware) (Servlet: 140) ~ [spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:759) [spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:395) [spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:327) [spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:1255) [spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:1243) [spring-boot-2.0.3.RELEASE.jar: 2.0.3.RELEASE] at com.murex.quality.gate.QGApplication.main (QGApplication.java:16) [classes /: na]

Если я возвращаюсь к axonIQ 3.4, все работает нормально, но не может заставить его работать с 4.1

1 Ответ

0 голосов
/ 26 марта 2019

Исключение, которое вы получаете: Я думаю, , никоим образом не связано с тем, что вы используете MongoDb вместо Axon Server в качестве средства хранения событий и для маршрутизации всех ваших сообщения в распределенном материале автоматически.

Исключение указывает на AnnotationUtils, класс утилит, используемый Axon для проверки конкретной аннотации Axon для предоставляемых вами компонентов. В частности, он не проходит проверку SpringAxonAutoConfigurer, когда пытается найти аннотацию MessageHandler.

Каждая аннотация обработки сообщений, пусть и Command, Event, Saga Event, Query, независимо от того, простирается от этого типа, который ваша установка не может найти по какой-то причине.

Что произошло с Axon Framework при переходе с версии 3.x на 4.x, так это то, что иерархия пакетов была изменена. Аннотация обработчика MessageHandler перемещена из пакета org.axonframework.messaging.annotation в модуле axon-core в Axon 3.x в пакет org.axonframework.messaging в модуле axon-messaging в Axon 4.x.

Не могли бы вы попробовать снова 4.1, но сначала очистить кеш, который у вас может быть, с зависимостями, чтобы убедиться, что у вас нет как Axon 3.x, так и 4.1?

Надеюсь, это поможет! Если нет, нам нужно посмотреть немного дальше.

...