如果在使用之间next()
和publish()
使用时抛出异常,Disruptor
或者publish()
由于其他原因或在可接受的时间内没有被调用,会发生什么?
处理此类情况的恢复/超时技术是什么?
如果在使用之间next()
和publish()
使用时抛出异常,Disruptor
或者publish()
由于其他原因或在可接受的时间内没有被调用,会发生什么?
处理此类情况的恢复/超时技术是什么?
在Disruptor
it self 调用发布在 finally 块中,以确保它们总是被调用。例如Disruptor.java#1017-1027
由于发布将插槽标记为可供事件处理程序使用,它们将停止直到发布调用发生。
恢复策略是不要破坏它;)也就是说,在您准备好使用它并始终调用发布之前,没有必要或没有必要声明您的插槽。如果您不想发布已声明插槽的数据,则可能需要某种错误标记才能进入插槽。