【问题标题】:Java Disruptor Handling ExceptionsJava Disruptor 处理异常
【发布时间】:2015-10-30 16:05:05
【问题描述】:
在中断器(版本 3.3.2)中,每个事件都是一个 Runnable(因为 EventProcessor 扩展了 runnable)。
我正在编写一个应用程序,每当 EventHandler 抛出异常时,调用disruptor.start() 的类需要捕获异常然后做出反应。
现在,如果 EventProcessor 是一个 Callable,那就很容易了。
Disruptor 中是否有其他方法可以传播异常?
【问题讨论】:
标签:
java
exception-handling
disruptor-pattern
【解决方案1】:
我通过将实现接口传递给EventHandler解决了这个问题,
正如 Doug Lea 书中所建议的那样。异常设置在 LinkedList 中,在方法调用结束时,我检索列表中的最后一个元素。示例代码:
final LinkedList<Throwable> listExceptions = new LinkedList<Throwable>();
MyClassWithDisruptor at = MyClassWithDisruptor.getInstance();
at.send(message, transport, conf, new AuditExceptionHandler() {
@Override
public void handleException(final Throwable e) {
e.printStackTrace();
}
@Override
public void setException(final Exception e) throws AuditTrailException {
listExceptions.add(e);
}
});