使用 axonframework 跨多个实例引发和处理事件

Raising and Handling events across multiple instances using axonframework

我刚刚开始使用 axonframework 探索基于事件的编程。我看到有人支持引发和处理事件。

我有一个场景,其中有多个服务使用 http 在不同 instance/jvm 中相互通信。

我现在想使用事件进行服务通信。我不确定我们如何通过网络传递事件并让它们由不同 jvm/host 中的服务 运行 处理。

axonframework 是否为此提供任何支持,或者我应该为此直接与消息传递中间件集成。

Axon 确实为此提供了支持,尽管在某些情况下,您仍然需要消息传递中间件。 Axon 专注于 API,而不是消息传递本身。

如果您使用事件存储,则可以存储您发布的事件,并让不同的节点从该存储中读取(按照自己的节奏)。 Axon 支持基于 JPA/JDBC 和 MongoDB.

的事件存储

如果您不 want/need 存储您的事件,您可以使用 Message Broker。 Axon 通过 Spring AMQP 支持 AMQP 消息代理。 Axon 将为您发送 serialization/deserialization 条消息。

在这种情况下,Axon 的好处在于它将消息传递实现从业务逻辑中抽象出来。业务逻辑只是将事件发布到事件总线,然后 Axon 将其发布到配置的代理。