当前位置: 首页 > 知识库问答 >
问题:

Axon事件在EventBus上多次发布

郎星汉
2023-03-14

一切都很好,但是假设我使用相同的聚合标识符再次发布相同的命令。我确实看到ServiceCreatedEvent被应用于调试器中的聚合,但是由于已经存在带有该键的域事件记录,所以不会向后端持久化任何内容。同样,一切都很好,但我看到ServiceCreatedEvent被发布给Kafka并被我们的监听器使用,这是意想不到的行为。

我想知道这是否是Axon的预期行为,或者我们的Kafka集成应该确保我们不会在EventBus上发布重复的事件。

编辑:

"oracle.jdbc.OracleDatabaseException: ORA-00001: unique constraint (R671659.UK8S1F994P4LA2IPB13ME2XQM1W) violated\n\n\tat oracle.jdbc.driver.T4CTTIoer11.processError

共有1个答案

梁丘权
2023-03-14

给出的解释有几个漏洞,这使得诚实起来很奇怪,也很难找出问题所在。

简而言之,不会,Axon不会因为第二次发送完全相同的命令而发布两次事件。这取决于您的实现。如果该命令创建了一个聚合,那么您应该看到对聚合标识符和(聚合)序号的唯一性要求的约束违反。如果它是一个在现有聚合上工作的命令,这取决于您的实现是否是幂等的yes/no。

从你的抄本来看,我猜你说的是一个创建聚合的命令处理程序。因此,你所看到的行为使我感到奇怪。事件存储区是自定义的,它插入了这种不希望的行为,或者是由于没有使用Axon专用的Kafka扩展。

 类似资料:
  • 是否有任何方法可以暂停EventBus从guava库发布的事件。 我有一个发布事件的方法(例如,SomethingChangedEvent)。现在,这个方法在循环中被另一个方法调用。问题是,每次调用时都会发布,即使只有最后一次更改才重要。由于事件的处理程序执行一些重计算,因此应用程序的性能会快速下降。 最后一次执行后,我想告诉guava恢复事件处理。 有没有办法告诉番石榴,除了最后一个,不要理会所

  • 我想捕获多个事件,以防运行带有多个参数的方法。有没有可能在不编写自己的调度程序将我的事件粘合在一起的情况下实现这一点?

  • 我对TextWatcher有一个恼人的问题。我一直在网上搜索,但什么也找不到。如果有人能帮助我,我将不胜感激。 由于某些原因,在一次文本更改时对TextWatcher事件的调用是不稳定的。有时它们被触发一次(就像它们应该被触发的那样),有时两次,有时三次。不知道为什么,整个事情都很直截了当。有时,PostTextChanged()上的可编辑参数在toString()和length()中返回空值。

  • 背景 JDK中通过Observer接口和Observable类实现观察者模式, Observer对象是观察者,Observable对象是被观察者. 实现一个简单的观察者模式有以下几步: 创建被观察者, 继承自java.util.Observable类 创建观察者, 实现java.util.Observer接口 在观察者中实现void update(java.util.Observable obse

  • 问题内容: 我试图用Javascript编写视频扑克游戏,以降低其基础知识,但是我遇到了一个问题,其中jQuery click事件处理程序多次触发。 它们被附加到用于下注的按钮上,并且对于在游戏过程中第一手下注(仅触发一次)非常有效。但是在秒针下注中,每次按下一个下注或下注按钮都会触发两次点击事件(因此,每次按下正确的赌注量是两次)。总体而言,在按一次下注按钮时,触发单击事件的次数遵循此模式序列的

  • 我使用vaadin spring IOC google guava eventbus。参考资料建议将guava eventbus用作singleton。但当我这样做时,我有以下问题:; > 假设我同时在3个不同的浏览器上运行应用程序,那么我的应用程序有3个不同的实例。 然后,例如,当我按下一个浏览器上的按钮并触发一个事件时,我注意到我的带有@subscribe注释的相关侦听器方法被调用了3次! 这