bra*_*zzi 3 java events cdi cdi-2.0 jakarta-ee
在 CDI 2.0 中,可以通过调用异步触发事件Event.fireAsync(),然后使用带@ObservesAsync注释的侦听器侦听此事件。
为什么我们需要Event.firesAsync()和@ObservesAsync?
Event.fire()和捕获的事件@ObservesAsync吗?Event.fireAsync()反过来说,为什么 CDI 2.0 不能异步处理由和 cauguth触发的事件@Observes?确实是一个很好的问题,这里有一些见解。
CDI EG(专家组)出于以下几个原因决定不将这两者混合使用:
Event.fireAsync()为您提供了一个CompletionStage,您可以使用exceptionally()或thenApply()等链接后续步骤。这自然适合异步编程模型。Event.fire()只给你void,你根本无法做出反应-不利于异步CompletionStage,你可以很容易地对此做出反应。Event.fire()(如果它也是异步的)RequestScoped需要在异步观察者线程中由 Weld 重新激活)我能想到的当前模型的其他优点:
fireAsync()允许您使用其他选项触发事件
NotificationOptions允许您为通知指定执行程序fireAsync()你有匹配@ObservesAsync| 归档时间: |
|
| 查看次数: |
1557 次 |
| 最近记录: |