spring-boot #jackson #axon #axon-framework
#весенняя загрузка #Джексон #axon #axon-framework
Вопрос:
5.5 и axon framework starter 4.5.4 Я могу без проблем читать и записывать свои события с помощью eventhandler и queryhandler, но когда я хочу использовать функцию eventstore.readevents, я получаю сериализацию.Я пытаюсь установить свойства моего приложения как для чтения, так и для записи, но не работает по-прежнему с той же ошибкой (кстати, я каждый раз очищаю базу данных и удаляю старые события).Я также пытаюсь установить тип xstream, но все та же проблема
axon.serializer.general=jackson
axon.serializer.events=jackson
axon.serializer.messages=jackson
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.axonframework.serialization.UnknownSerializedType and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.12.5.jar:2.12.5]
at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1276) ~[jackson-databind-2.12.5.jar:2.12.5]
at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400) ~[jackson-databind-2.12.5.jar:2.12.5]
Ответ №1:
Прежде всего, я должен спросить, почему вы хотите использовать eventStore#readEvents
, учитывая, что это не обычное использование. Этот метод используется внутри фреймворка и большую часть времени должен сохраняться таким образом.
Что касается вашей проблемы, вы можете легко проверить в коде фреймворка, что происходит и как он использует eventStore#readEvents
метод. Прежде всего, подпись здесь: DomainEventStream readEvents(String aggregateIdentifier);
Он возвращает a DomainEventStream
, который является Iterator
реализацией a DomainEventMessage
(как вы также можете видеть в code: public interface DomainEventStream extends Iterator<DomainEventMessage<?>> {
).
Проверяя любое из использований, например EventSorcingRepository
, вы можете увидеть, как оно используется здесь и здесь, и в значительной степени использовать метод итератора для этого ( hasNext
и peek
, например). Использование этих методов даст вам доступ к DomainEventMessage
тому, где вы можете получить Type
, а также Payload
(и другие полезные вещи, которые вам могут понадобиться).
Надеюсь, это прояснит его использование, но также убедитесь, что вы действительно хотите его использовать!
Комментарии:
1. На самом деле я пытаюсь детально изучить возможности axon. по этой причине я пробую другой код. Если использование eventstore readevents не является хорошей практикой в то время, у меня нет какой-либо конкретной причины его использовать. Спасибо