Не найден обработчик аксона для запроса при возврате ответа с универсальным

У нас возникают проблемы, когда наш Axon QueryHandler возвращает класс с универсальным параметром, таким как QueryResult<T> . Например:

class QueryResult<T>(val values: List<T>, val status: Status,
                                 var text: String? = null) : Serializable {
...
}

И наш обработчик запросов:

@QueryHandler
    fun handle(query: SomeQuery): QueryResult<String>{

Аксон дает нам следующее сообщение:

NoHandlerForQueryException: не найден обработчик для [SomeQuery] с типом ответа [InstanceResponseType {class QueryResult}]

Разрешено ли использование Generics в QueryHandlers или мы должны вызывать queryGateway определенным образом?

Всего 1 ответ


Аксон будет разрешать дженерики только для следующих типов возврата:

  • Collection с
  • Future с
  • Optional с

Я полагаю, что для вашего желаемого ответа на запрос потребуется новая реализация интерфейса ResponeType , которая проведет еще большую проверку доступных обобщений.

Короткий ответ? То, что вы пытаетесь сделать, в данный момент невозможно.

Документация относительно коротка по этому вопросу, но все еще ясна, я думаю. Если вы не согласны с этим, вы можете предоставить запрос на удаление или открыть вопрос, чтобы запросить разъяснения по этому вопросу.


Есть идеи?

10000