【问题标题】:Weld - Asynchronous event observersWeld - 异步事件观察器
【发布时间】:2010-09-24 21:27:06
【问题描述】:

我正在使用 Weld 来观察事件。我认为有一种方法可以指定观察者是否是异步的,但我没有找到该注释或文档。

观察者可以是异步的吗?如果可以,我需要做些什么才能做到这一点?

【问题讨论】:

  • 我认为最接近的匹配是使用这个:TransactionalObserverMethodImpl 和 TransactionPhase。如果我指定 TransactionPhase 期间以外的时间,则通知将延迟到可运行对象中:download.oracle.com/javaee/6/api/javax/enterprise/event/…
  • 我对此的唯一抱怨是它被设计为在 RequestContext 中运行。那是规范的一部分吗?

标签: asynchronous observer-pattern jboss-weld


【解决方案1】:

对此有一个未解决的请求:CDI-31: Asynchronous events

根据您的要求,您可以按照评论中的说明设置不同的transactional observer:如果您使用 AFTER_COMPLETION 或 AFTER_SUCCESS,在您的应用程序中它应该看起来像异步执行。但是,在框架解决之前,我刚刚找到了一个使用 JMS for asynchronous execution in CDI 的示例。

【讨论】:

  • 如果有人向CDI专家组开一个bug就更好了。也许我们可以把它放到 JEE7 中!
【解决方案2】:

看看Piotr Nowicki's博客http://piotrnowicki.com/2013/05/asynchronous-cdi-events/上的帖子

他描述了几种实现 CDI 事件异步行为的方法。

【讨论】:

    【解决方案3】:

    如果你们想看到这种情况发生,您需要访问 Kariem 的答案中提供的链接并发表您的意见。专家组似乎不愿意考虑添加异步事件,因为他们认为这会使规范膨胀。

    老实说,Guice 设法提供了这个功能,而且它仍然是轻量级的,所以我发现反对这个有点违反直觉的论点。不过,如果您想查看此功能,请前往链接,发表您的意见。

    -乔纳森

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2017-09-27
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多