我们正在使用Axon3.4,并希望避免升级这一点。我已经研究了可能的解决方案,并考虑在跟踪事件处理器上使用reset方法,以指定它们从下一个事件的跟踪令牌开始处理(允许我们调查失败并在解决后从开始重放),但无法找到任何方法来确定下一个跟踪令牌是什么。是否有一种方法可以在Axon中建立这个,或者可能通过查询我们存储事件的Postgres数据库?
如果您想在任何地方跳过此事件,那么我能想到的最合理、最简单的解决方案是引入upcaster
,它从事件流中永久地过滤掉该事件。
为了实现这一点,我建议创建一个EventUpcaster
实现,在这里您将收到IntermediateEventRepresentation
实例的流
。在这样的IntermediateEventRepresentation
上,您可以检查它是哪种类型,如果需要,可能会事件内容,并根据需要从流中筛选它。
顺便说一句,无论您使用的是Axon框架的旧版本,这都应该有效。
我在用轴突事件跟踪处理器。有时事件需要10秒才能处理。 这似乎导致消息再次被处理,并出现在日志“释放令牌X/0的声明失败。它由另一个节点拥有”中。 如果我增加段数,它不会记录此事件,但事件仍被处理两次,所以我认为这可能会引起误解。 (我想我搞错了) 我已经尝试调整fetchDelay、cleanupDelay和TokenClaimInterval。没有一个解决了这个问题。我是不是缺了什么东西? 编
这里是我的application.yml的相关部分 从文档中,我发现应该创建一个SpringAMQPMessageSource bean: 如果我从rabbitmq管理面板向队列发送消息,我会看到日志: SpringAMQPMessageSource的JavaDoc是这样说的: 但到现在我都找不到在哪里注册,也找不到怎么注册。 配置中的Axon.EventHandling条目和聚合中的@Proce
当我切换到XStream作为事件序列化器时,一切都很好。不执行额外的偶数实例,在命令处理程序中创建的事件与在EventHandler中处理的事件相同。 这是怎么回事?
问题内容: 您将如何从业务逻辑层中的一种方法在数据访问层中调用几种方法,以使所有SQL命令都驻留在一个SQL事务中? 可以从BLL中的其他位置分别调用每个DAL方法,因此不能保证数据层方法始终是事务的一部分。我们需要此功能,因此,如果数据库在长时间运行的过程中脱机,则不会提交任何内容。业务层基于每个先前调用的结果来编排不同的数据层方法调用。我们只想在整个过程的最后(从业务层)提交。 问题答案: 好
我有两个独立的Spring-Boot微服务,一个是命令端,另一个是查询端,命令服务将事件存储在Mongodb中,将事件放到RabbitMQ中,然后查询端订阅队列并建立查询模型。现在如何在Axon中实现事件重放和建立查询模型?是否有可能两个服务在不同的节点上独立运行。如果不可能,那么我应该遵循什么来实现这一点。