【发布时间】:2021-09-03 19:00:36
【问题描述】:
我正在尝试将 Axon 框架用于基于事件溯源的应用程序,并且我需要发布某些类型的事件,以便其他服务可以出于特定目的(统计、电子邮件服务等)意识到这一点。问题是,根据 Axon 的文档,服务应该共享事件存储以订阅这些事件(请参阅here)。这违反了微服务架构,因为服务共享数据库,尽管架构不会随着时间而改变,因为它是一个事件存储。另一种选择是设置 Kafka 或其他消息代理,如 RabbitMQ、ActiveMQ 或任何其他与 AMQP 兼容的代理。但是,这意味着这些消息代理也将负责在事件中持久化,这并不理想。我的问题是:有没有办法将事件保存在非共享数据存储中,同时将事件发布到主题或队列中的另一个服务?
谢谢。
【问题讨论】:
-
由于我回答的互动,回到这个问题后,我又看了你的问题。我完全同意所引用的部分提供了与当前应用程序开发标准相冲突的错误信息。因此,我在参考指南中添加了一个问题,以相应地更新本节。就这是否正义而言,为此道歉,托马斯。提交更新后我会尽快回复。如果您有兴趣,可以在这里找到问题 - github.com/AxonIQ/reference-guide/issues/225
-
嗨史蒂文,感谢您照顾这个。没有必要道歉,这是一个技术讨论,它非常有用。希望我们可以帮助改进 Axon。是否可以查看事件存储的源代码还是私有的?
-
Axon Server 标准版是开源的,可以在这里查看(github.com/AxonIQ/axon-server-se)。包含 RAFT 以实现分布式共识的企业版已关闭。这意味着 RAFT 细节不可见。不过,存储解决方案是 Axon Server Standard 的一部分,因此您绝对可以在那里查看。我相信您已经找到了存储库,我基于您构建的这个问题 - github.com/AxonIQ/axon-server-se/issues/390
-
只是想告诉大家这个问题中提到的“分发事件”部分已经更新。因此,所描述的困境应该得到解决,尽管在概念上是正确的。
标签: cqrs event-sourcing axon axon-framework