如何查看 Axon 数据库中可用的字段?

How to see what fields are available in Axon databases?

这里是 Axon 的全新内容。

我在 Kotlin 中定义了一个 class:

data class ProjectedQuote(
        @Id var submissionId: String,
        var periodId: String,
        var accountNumber: String
)

它由事件处理程序实例化和更新,然后返回以响应查询。

我需要创建一个通过 accountNumber 而不是 id 查找 ProjectedQuote 实例的查询。我不知道该怎么做。

迄今为止,我只做过如下查询:

SELECT q FROM ProjectedQuote q WHERE q.id LIKE CONCAT(:idStartsWith, '%') ORDER BY q.id

我的狭义问题是:

如何使用 accountNumber 而不是 id 编写查找 ProjectedQuote 的查询?

我的更广泛的问题是:

如何查看 Axon 数据库中哪些字段可用于查询?

查询消息通常从事件侦听器创建的视图模型中读取数据。事件侦听器通常根据命令模型做出的决定来执行逻辑。通常,这涉及更新视图模型或将更新转发给其他组件。

因此创建和接收视图的机制完全取决于您。 (jpa, spring data, mybatis, jdbc etc.) axon项目的一个很好的例子是https://github.com/idugalic/digital-restaurant

Sergey 在这里指出的内容也非常有道理。 如何在此类应用程序中对查询模型建模完全取决于您。所以选择 JPA、JDBC、MongoDB、ElasticSearch、Neo4j..无论哪种包含查询模型套件的格式最适合您!

因此,这种存储机制的自由也指出您的查询模型未存储在 'Axon Database' 中;它存储在您选择的数据库中。

关于如何为您的查询建模,您可以查看 QueryMessagesQueryHandlers 如何在 Axon 中使用,而不是 here。从 Axon 的角度来看,这只是另一种专用消息类型,就像 Command- 和 EventMessages 一样。

使用查询消息,您可以将要执行的查询类型指定为单独的对象,查询。 该查询将依次由 @QueryHandler 注释函数处理。 @QueryHandler 注释函数将依次执行实际操作,从您选择用于存储模型的数据库中检索模型。

希望这能给你一些见解!