我刚刚开始使用 axonframework 探索基于事件的编程。我看到支持引发和处理事件。
我有一个场景,其中有多个服务使用 http 在不同的实例/jvm 中与每个服务进行通信。
我现在想使用事件进行服务通信。我不确定我们如何通过网络传递事件并让它们由运行在不同 jvm/host 中的服务处理。
axonframework 是否为此提供任何支持,或者我是否应该为此直接与消息传递中间件集成。
我刚刚开始使用 axonframework 探索基于事件的编程。我看到支持引发和处理事件。
我有一个场景,其中有多个服务使用 http 在不同的实例/jvm 中与每个服务进行通信。
我现在想使用事件进行服务通信。我不确定我们如何通过网络传递事件并让它们由运行在不同 jvm/host 中的服务处理。
axonframework 是否为此提供任何支持,或者我是否应该为此直接与消息传递中间件集成。
Axon 确实为此提供了支持,尽管在某些情况下,您仍然需要消息传递中间件。Axon 专注于 API,而不是消息传递本身。
如果您使用事件存储,则可以存储您发布的事件,并让不同的节点从该存储中读取(按照自己的节奏)。Axon 支持基于 JPA/JDBC 和 MongoDB 的事件存储。
如果您不想/不需要存储您的事件,您可以使用 Message Broker 代替。Axon 通过 Spring AMQP 支持 AMQP 消息代理。Axon 将为您进行消息的序列化/反序列化。
在这种情况下,Axon 的好处在于它将消息传递实现从业务逻辑中抽象出来。业务逻辑只是将事件发布到事件总线,然后 Axon 将其发布到配置的代理。