当前位置: 首页 > 知识库问答 >
问题:

Axon或Kafka支持CQRS/ES

李开宇
2023-03-14

我可以使用两种不同的方法:

  1. 使用Axon:分级聚合负责处理CreateRatingCommand并发送RatingCreateDevent。发送该事件将使用要存储在事件存储区中的评等。其他事件处理程序可以在连接到Axon服务器实例并对分级执行任何需要的操作时重放事件流。在本例中,事件处理程序将用作流处理器。
  2. 使用Kafka:KafkaProducer将用于在Kafka主题中存储分级POJO(经过正确的序列化)。将主题的保留时间设置为不确定将不会导致事件在时间上丢失。在本例中,Kafka流将用于执行实际的分级处理逻辑。

在我看来,这两种方法都存在一些体系结构问题:

    null
    null

我不知道这是否是这类问题的首选论坛...我只是想知道在这个特定的用例中,您会推荐什么作为最佳实践。期待您的反馈,并随时指出我在前面的问题中遗漏的其他思想点。

编辑@12/11/2020:刚刚发现一个相关讨论,包含与我的问题相关的有用信息。

共有1个答案

祁权
2023-03-14

正如Jan Galinski已经说过的,这并没有一个真正的愚蠢的答案。这值得在例如Axoniq的讨论论坛上进行更广泛的讨论。不管怎样,这里有一些问题我肯定可以给出答案,所以让我们开始吧:

  1. Axon问题1-Axon框架正如您所注意到的,它经常用于以DDD为中心的应用程序。然而,没有任何东西迫使你把自己建立在这个概念之上。您可以将框架从事件来源细节中剥离出来,并完全和纯粹地使用不同命令、事件和查询的消息传递思想来建模细节。当版本4(当前版本)发布时,将Axon Framework版本3分离成这些子部分是一个有意识的决定。其次,我认为不仅仅基于事件信息是非常有价值的。使用不同的命令和查询只会进一步解耦组件,从而使应用程序的扩展更加丰富和容易。
  2. Axon问题2-这取决于@EventHandler注释方法的实际位置。如果它们在同一个类中,则只调用一个。如果它们被定位到不同的类中,那么两者将接收相同的事件。此外,如果它们被隔离在不同的类之间,请注意Axon使用事件处理器作为调用事件处理程序的技术解决方案。如果不同的类在相同的事件处理器下分组,则可以对首先调用哪个处理程序进行特定的排序。其次,如果事件处理应该并行发生,则必须配置所谓的TrackingEventProcessor(Axon Framework中的默认值),因为它允许配置多个线程来并发处理事件。好了,结束这一节,你在第二个问题中所问的一切都是一种选择,而不是必然。只是配置的问题。在Axon Framework的此文档页中可能值得检查一下这个问题。
  3. Axon问题3-由于Axon服务器用于事件存储,所以根本没有保持期。因此,是的,它们默认保留到时间结束。但是,如果您觉得将事件存储为所有模型的基础没有价值(就像使用事件源时所做的那样),那么没有什么可以阻止您删除事件。

这是我个人不太熟悉的Kafka问题(我猜是Axon框架的贡献者)。不过,我也可以在这件事上给你我的两分钱,尽管我在这里推荐第二种意见:

    null
 类似资料:
  • 我正在研究Kafka是否支持任何要处理的队列或消息的优先级。 看来它不支持任何这样的事情。我在谷歌上找到了这个也支持这一点的邮件存档:http://mail-archives.apache.org/mod_mbox/incubator-kafka-users/201206.mbox/%3CCAOEJIJHVHSR=d6astihpsqwvg6vk5xylam6ymdcd6uauoxf-dq@mai

  • 我已经使用XSSFWorkbook和XSSFSheet设置了一个类。但是我没有导入库的选项,即使将以下依赖项添加到pom.xml. 下面是我的pom.xml依赖项:

  • 我有一个spring boot应用程序,它使用spring boot V2.1.9.发布版本。我只想升级SpringKafka。但是升级后我没有发现这样的方法错误。 我试图将spring boot升级到2.2.0,但由于一些其他插件,如swagger不支持。

  • CQRS.NET https://www.nuget.org/packages/Cqrs Symbols now available on nuget.org. See https://devblogs.microsoft.com/nuget/improved-package-debugging-experience-with-the-nuget-org-symbol-server/ for de

  • 问题内容: 根据这些评论,JSONKit不支持ARC,甚至在ARC环境中都不使用fobjc-no- arc设置运行:https : //github.com/johnezang/JSONKit/issues/37 问题答案: 您仍然可以在ARC应用程序中使用JSONKit。 我自己用的。 在XCode 5中选择项目根目录,在“ 选择应用程序”下,然后选择“ 选项卡”。在JSONKit.m 下,双击

  • 我们正在建立一个服务。它必须从文件中读取config。我们目前正在使用YAML和Jackson来反序列化YAML。我们有一种情况,我们的YAML文件需要继承/扩展另一个(多个)YAML文件。例如,类似于: 因此,部分配置存储在中。是否有任何库对此提供支持?如果它允许从多个文件继承,则会加分。我们可以改为使用JSON而不是YAML。