如果在使用next()
或publish()
时由于其他原因或在可接受的时间内未调用Disruptor
和publish()
之间引发异常,会发生什么情况?
什么是恢复/超时技术来处理这种情况?
最佳答案
在Disruptor
中,它要自行发布的发布位于finally块中,以确保始终被调用。例如Disruptor.java#1017-1027
当发布标记该插槽可供事件处理程序使用时,它们将停滞直到发生发布调用。
恢复策略是不破坏它;)那就是在准备使用它并始终致电发布之前,无需声明您的位置即可。如果您不想发布声称拥有该插槽的数据,则可能需要某种错误标记才能放入该插槽。
关于java - 如果Disruptor中的next()和publish()之间引发异常,会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18560152/