2012年02月25日 09:04 "@
banq"的内容
哦,如果是这样要求,那么队列(Disruptor)方式本身就产生这种保证,只要放进去,肯定不会消失,除非当机,取出来也能取出来。
如果希望放进去时和其他动作保证过程原子性,和取出来时和其他动作保证原子性,可以借助JMS来辅助,不过并发 ...
哦,不好意思,刚发现自己描述有误啊。实在抱歉。
我的意图是在同一个场景下的Domain的update工作。
一个场景内涉及多个Domain,当场景的任务结束后势必会产生event继而涉及到update Domain。
个人对Domain(Domain放在Cache里了)的实现加入了version control,当多个Domain被要求一起update时,要求Cache framework能check version,再确保都可update后在一次性的update。
当Cache update 成功后就send出event,event交由JMS(包括Disruptor)之类的工具来异步处理即可。
总体的过程是这样:
Domain活在cache里,Domain带version 这样可避免锁。
Domain的op引起event时,先拦截event 走cache来确保Domain的version正确性。
最后根据Cache方的结果来确认是否真的发出这批event(我称之为有效的event,因为update失败,意味着version不对,event也就过期了)
一直在寻找能提供这样功能的Cache,只要能带原子性的update多个Object即可.
关于Disruptor,JMS之类的工具,我仅仅用于去持久化Domain就行了。
多谢bang大