我有以下情况(在JBoss AS6和AS7上运行):
SomethingChangedEvent请考虑以下示例:
@Singleton
public final class Scheduler {
@Inject
private Event<SomethingChangedEvent> event;
@Schedule
private void scheduleSomething() {
event.fire(new SomethingChangedEvent());
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这个事件被添加到服务器上的某种队列并由它分发.@Observers将通知使用任何观察此类事件的方法.该event.fire()方法将立即返回.
但是,我面临以下问题:有时,该event.fire()方法需要两到三分钟才能返回,因为假定每十秒钟调用一次,因此会导致我的日程安排受到严重破坏.
所以问题是:这怎么可能?被解雇的事件会发生什么,但没有人观察到它们?是否有可以溢出的队列?
此致,斯文
CDI事件处理同步发生.实际上有一个建议是将异步处理模型包含在规范中,但它仍然被投票.与此同时,有两种"强制"异步处理方式:
将第二种方法应用于您的代码示例:
@Singleton
public final class Scheduler {
@Inject
private Event<SomethingChangedEvent> event;
@Asynchronous
private void scheduleSomething() {
event.fire(new SomethingChangedEvent());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2365 次 |
| 最近记录: |