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

时间:2019-03-26 22:11:30

标签: axon

这里是Axon的新手。

我在Kotlin中定义了一个类:

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数据库中哪些字段可供查询?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

谢尔盖在这里指出的也很正确。 在这样的应用程序中如何为查询模型建模完全取决于您。因此,选择JPA,JDBC,MongoDB,ElasticSearch,Neo4j ..哪种格式最好包含查询模型套件!

这种自由的存储机制还指出,您的查询模型未存储在“ Axon数据库”中;它存储在您选择的数据库中。

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

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

希望这会给您一些见识!