【问题标题】:CacheEntryCreated event--againCacheEntryCreated 事件——再次
【发布时间】:2013-03-26 16:40:22
【问题描述】:

来自JBoss Infinispan Discussions的交叉发帖

我正在尝试实现一些代码,只要在我的 Infinispan 缓存之一中创建条目时就会执行操作。我很快意识到传递给我的@CacheEntryCreated 方法的 CacheEntryCreatedEvent 对象不包含新创建的条目,因此我开始寻找解决方案。

我发现了有关解决方案的各种讨论,即捕获在@CacheEntryCreated 事件之后传递的@CacheEntryModified 事件并在isPre()=false 时获取对象。但是,我想我错过了一些东西,因为在所有讨论中都没有解决您有一个修改事件的情况,该修改事件代表对现有条目的合法修改而不是创建。

这是否意味着我的@Listener 对象必须在事件传递之间维护状态信息?我的@CacheEntryModified 必须整合事件对象,确定它是一个创建事件(即 getValue() == null && isPre() == true),然后在抓取新创建的对象之前等待下一个@CacheEntryModified 事件?

这提出了一个明显的问题,即如果另一个 @Listener 对象在第二个 @CacheEntryModified(即 isPre() == false)事件传递之前否决了修改,该怎么办?

其他人如何处理这种情况?

【问题讨论】:

    标签: jboss7.x infinispan


    【解决方案1】:

    我想现在最好的方法是在你的听众中使用ThreadLocal

    未来的 5.3.0 版本将对此进行很大改进,CacheEntryCreatedEvent 将有一个 getValue() 方法,CacheEntryModifiedEvent 将有一个 isCreated() 方法:https://github.com/infinispan/infinispan/commit/1aa2554e1c5ea46318402975de946f2e9ea44442#diff-22

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多