【问题标题】: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);
    
            }
        });
    

    【讨论】:

      【解决方案2】:

      破坏者提供了一个ExceptionHandler,用于处理此类问题。

      【讨论】:

        猜你喜欢
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-03
        • 2020-12-09
        • 1970-01-01
        相关资源
        最近更新 更多