我正在使用带有Spring Boot的Axon framework 4.0.3进行事件源,并且有一个跟踪处理器配置为具有多个段/线程来同时处理事件:
axon.eventhandling.processors[my_processor].initial-segment-count = 6
axon.eventhandling.processors[my_processor].thread-count = 3
它意味着有两个my_processor
节点,每个节点使用3个线程。
但是,此解决方案的问题在于它不可扩展。我必须从一开始就知道我必须拥有多少节点和线程,因为以后无法更改它:如果我增加initial-segment-count
并重新启动处理器,则没有任何反应。更糟糕的是,如果我减少段数:那些用于“已删除”段的事件永远不会被处理!
理想情况下,它应该只能指定每个节点应该使用的线程数。之后,当新节点添加到处理器时,段的数量应相应地向上扩展。同样,如果删除节点,则段数应缩小。 Axon可以实现这一点吗,或者它的设计是不是按照这种方式进行缩放?
你的这个假设是完全正确的 - 只是在运行时调整这些字段是不可扩展的。这正是我们引入拆分和合并操作,在Axon应用程序的运行时拆分/合并段的原因。请参阅this GitHub请求将其引入框架。
此功能将成为今天发布的Axon 4.1的一部分。请注意,如果您只使用框架,则此功能不会为您提供自动缩放功能。它需要您的部分实施,利用提供的拆分和合并API,使其自动化。
另一方面,Axon Server在UI中为您提供了一个拆分/合并按钮,从而减轻了您自己构建它的必要性。我相当肯定Axon Server最终还会引入一个自动扩展解决方案,但不是4.1版本的一部分。
希望这能给你一些背景Archie!