2013-08-30 16:56 "@
banq "的内容
将一个请求放在队列中,多个消费者同时读取各自并行处理即可,案例参考Disruptor,或者本站Jdon框架的应用案例:http://www.jdon.com/jdonframework/app.htm ...
banq老师,不好意思,由于最近工作上事太多,没及时回复您。
今天下载了jdonMVC+CQRS+ES的例子。
其中ES的代码片段如下:
@[author][author]Send[/author][/author]("created")
public DomainMessage created(UserCreatedEvent event) {
return new DomainMessage(event);
}
@[author][author]Send[/author][/author]("updated")
public DomainMessage updated(UserUpdatedEvent event) {
return new DomainMessage(event);
}
<p class="indent">
|
调用ES的代码片段
public void update(UserUpdatedEvent userUpdatedEvent) {
if (!userUpdatedEvent.getNewUserDTO().getUserId().equals(this.userId)) {
System.err.print("update not this user");
return;
}
this.name = userUpdatedEvent.getNewUserDTO().getName();
this.email = userUpdatedEvent.getNewUserDTO().getEmail();
this.es.updated(userUpdatedEvent);
}
<p class="indent">
|
想请教您的问题是:
这个例子中的异步事件处理都是没有返回值的情况,如:this.es.updated(userUpdatedEvent);
当然,jdon的框架如此强大,支持异步事件处理有返回值必然不在话下的。
如上面的代码改为:
Object result = this.es.updated(userUpdatedEvent);
......
......
return result;
<p class="indent">
|
那么在result返回之前,当前处理应该是wait的状态,直到结果返回后再继续执行后面的代码,类似于线程的wait和notify机制。
这里我厚颜做回伸手党,想请banq老师讲讲,jdon的异步事件框架是如何处理的?
1、当前的处理如何进入wait状态?wait超时怎么处理?
2、事件event放到消息队列后等待处理,多个消费者不停的读取并行处理,那么就会产生很多的结果,结果是否会放在另外一个消息队列中?由于是异步处理,结果如何能够正确的返回给对应的请求?
麻烦banq老师提供点具体实现的代码或是将实现的原理讲讲。谢谢!!