Исключения обработки Java Disruptor

В дисрапторе (версия 3.3.2) каждое событие является Runnable (поскольку EventProcessor расширяет runnable).

Я пишу приложение, которое всякий раз, когда EventHandler выдает исключение, класс, вызывающий interruptor.start(), должен поймать исключение и затем отреагировать.

Теперь, если бы EventProcessor был Callable, это было бы легко.

Есть ли в Disruptor другой способ распространения исключения?


person mascanc    schedule 30.10.2015    source источник


Ответы (2)


Я решил проблему, передав интерфейс реализации в EventHandler, как это было предложено в книге Дуга Ли. Исключение устанавливается в 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);

        }
    });
person mascanc    schedule 21.12.2015

Разрушитель предоставляет ExceptionHandler. предназначенный для решения подобных проблем.

person Sam Turtel Barker    schedule 10.11.2015