2016-05-23 4 views
0

У меня есть akka camel-ftp потребитель. Я хотел бы обрабатывать все исключения в коде (например, Authentification Exception или файл на ftp не может быть прочитан). Я вижу только стек из таблицы и не могу его обработать. Возможно, лучше использовать scalaz-camel.Akka Scala Camel. Обработка исключений

Кроме того, я хотел бы знать, когда все файлы обрабатываются и Actor простаивает недо следующего чтение Папки FTP

class FtpWorkerActor() extends Consumer with ActorLogging { 

    override def receive: Actor.Receive = { 
    case msg: CamelMessage => /* handle files */ 

    case v: Any => /*never riched. but i need to understand if I have authentification issues etc*/ 

    } 

    override def endpointUri: String = { 
    val initDelay = 1000 // 1 second 
    val otherOptions = s"disconnect=true&throwExceptionOnConnectFailed=true&filter=#datFileFilter&delay=$processingDelay&initialDelay=$initDelay" 
    s"ftp://[email protected]$ftpSourcePath?username=$username&password=$pass&$otherOptions" 
    } 
} 

ответ

0

Вы должны попытаться запустить актер внутри супервизора и осуществлять обработку ошибок там. Вот больше документации о том, что: http://doc.akka.io/docs/akka/current/scala/fault-tolerance.html

В этом случае ваш руководитель будет иметь возможность перехватывать все исключения и решить, что делать с FtpWorkerActor - остановка, перезагрузка и т.д.

+0

Здравствуйте @ sap1ens. Спасибо за ответ. Я добавил 'переопределить VAL supervisorStrategy = OneForOneStrategy (maxNrOfRetries = 2, withinTimeRange = 1 минута) { случай v: GenericFileOperationFailedException => log.warning (v.getMessage) Переначала случай _ Исключение ⇒ Перезагрузка } ' к менеджер актер. но это не сработает. Я вижу в журнале GenericFileOperationFailedException, помеченный как предупреждение (а не ошибка) верблюдом ftp. не могли бы вы поделиться более подробной информацией –