如何解决从订阅事件处理器迁移到跟踪事件处理器
所以我们正在慢慢尝试迁移到跟踪处理器。作为其中的一部分,我们为写入 Elasticsearch 的新事件创建了一个新处理组,并将其设置为使用跟踪处理器(默认为订阅)。
从现在开始一切正常。但是我希望新的处理组事件处理程序处理过去生成的一大堆事件。
我查看了 token_entry
表,但不太确定如何重置它。
例如,这似乎是作为字符串的令牌(blob)
<org.axonframework.eventhandling.GlobalSequenceTrackingToken><globalIndex>1794</globalIndex></org.axonframework.eventhandling.GlobalSequenceTrackingToken>,<org.axonframework.eventhandling.GlobalSequenceTrackingToken><globalIndex>22966</globalIndex></org.axonframework.eventhandling.GlobalSequenceTrackingToken>,<org.axonframework.eventhandling.GlobalSequenceTrackingToken><globalIndex>22966</globalIndex></org.axonframework.eventhandling.GlobalSequenceTrackingToken>
最好手动重置。
解决方法
要重置 StreamingEventProcessor
,例如 TrackingEventProcessor
(TEP),您可以在正确的实例上调用 StreamingEventProcessor#resetTokens
方法。
要找到正确的实例,您可以使用 EventProcessingConfiguration#eventProcessor(String,Class)
方法检索包含 Optional
的 EventProcessor
。如果您为“Class”参数提供 TrackingEventProcessor.class
,框架会自动将其转换为 TEP 实例。
虽然您也可以直接调整存储的 TrackingToken
,但不建议这样做。如果您在数据库中更改它,则框架不知道您正在执行重播。因此,您将失去 Axon 重播 API 的优势。顺便说一下,您可以查看关于 here 主题的参考指南。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。