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

Axon:使用Cassandra作为事件存储

公冶鸣
2023-03-14
o.a.e.TrackingEventProcessor : message=Unable to claim the token for segment: 0. It is owned by another process

这很可能是我们自己的缺陷(可能是我们的bean配置Kafkapublisher/EventProcessorConfigurer),我们将解决这个问题,但在您看来,更大的问题是,是否可以让Cassandra与Axon一起工作。我记得在google groups论坛上看到一些帖子说,由于性能问题,没有考虑对Cassandra的支持。我们希望确保我们不会投资于那些将是一场噩梦或根本不是一个好的解决方案的东西。

共有1个答案

澹台承
2023-03-14

如果希望在使用Axon框架的同时创建自己的事件存储解决方案,建议提供EventStorageEngine实现。

这样,EventStore类型为EmbeddedEventStore(如果您不使用Axon Server),可以简单地指向其他存储解决方案来存储和检索事件。EventStorageEngine的示例是JPAEventStorageEngineJDBCEventStorageEngineMongoEventStorageEngine。前两者位于Axon Frameworks事件源模块中,而MongoDb变体是Axon的Mongo扩展的一部分。

现在,你的实际问题是它是否可行。我非常相信您应该能够起草一个CassandraEventStorageEngine,它可以很好地完成这项工作。

然而,它是否会成为您所能拥有的最优事件存储是非常有争议的。AxonIQ将Axon Server作为一个事件存储是有原因的,这只是因为如果使用不同的存储方法,您对事件存储的所有硬需求都不能得到最佳实现?为什么?很简单,因为RDBMS、MongoDb、Cassandra、Kafka等提供了比事件存储更广泛的功能,其核心是不同的意图。

在这里提供所有的细节可能有点多,但Allard Buijze(Axon框架的创建者)的这个演示应该会对此有一些深入的了解。还有,为什么卡桑德拉不是最佳解决方案。

所以最后,如果你强烈想建立自己的活动商店,拿起卡桑德拉将是一个有趣的努力。如果它能从事件商店中为您带来您所需的一切,那么这是值得讨论的。

 类似资料:
  • 我想尝试使用Cassandra作为事件源应用程序中的事件存储。我对事件存储的要求非常简单。事件“模式”应该是这样的: id:聚合根实体的id data:序列化的事件数据(例如JSON) 时间戳:事件发生时 sequence_number:事件的独特版本 我对卡桑德拉完全陌生,所以请原谅我对即将写的东西的无知。我只有两个查询,我想对此数据运行。 为我提供给定聚合根 ID 的所有事件 如果序列号为 我

  • 我如何要求axon刷新EventStore的缓存? 我知道这样插入事件绝对不是一个好的做法,但我们需要一个工作区。

  • 如何读取自创建以来该聚合的所有事件?

  • 问题内容: 我对Redis真的很感兴趣,我有一个主意,想知道它是否合适,或者是否对数据存储没有其他建议。同样,关于存储数据的任何技巧将不胜感激。 我的想法只是一个简单的事件系统,因此发生了一个事件,并将其存储在redis中,如下所示 关键 值[unixtimestamp]:[系统]:[事件] | [结果] 数据可以是任何销售,印象数,错误,api响应时间,页面加载时间以及任何实时分析数据。然后,我

  • 这个问题类似于将Kafka用作CQRS EventStore。好主意?,但更具体的实现。当我有数千个事件“源”(DDD中的聚合根)时,如何使用kafka作为事件存储?正如我在链接问题和其他一些地方读到的,我会有每个来源的主题的问题。如果我将事件按类型拆分到主题中,它将更容易使用和存储,但我需要访问特定源的事件流。如何用Kafka做事件来源?