У меня есть записи журнала таймаута для каждого запроса на диалог в приложении Rivr VoiceXML. Я смотрел com.nuecho.rivr.core.channel.Timeout в методах doTurn, и это нормально, но я продолжаю получать эти журналы, которые не входят в мой код, и поэтому не знаю, как поймать и предотвратить получение файла журнала полный из них:Журналы таймаута в диалогах Ривра
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] [Dialogue adef5e0c-4b6d-4f9a-9246-db8c3afadda9] INFO com.nuecho.rivr.dialogue - Dialogue ended.
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] Exception in thread "Dialogue adef5e0c-4b6d-4f9a-9246-db8c3afadda9"
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] java.lang.RuntimeException: Timeout while sending final result.
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] at com.nuecho.rivr.core.channel.synchronous.SynchronousDialogueChannel$1.run(SynchronousDialogueChannel.java:242)
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] at java.lang.Thread.run(Unknown Source)
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] Caused by:
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] com.nuecho.rivr.core.channel.Timeout: Timed-out in send() after 5 seconds (5000 ms) in [dialogue to controller]
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] at com.nuecho.rivr.core.channel.synchronous.SynchronousDialogueChannel.send(SynchronousDialogueChannel.java:405)
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] at com.nuecho.rivr.core.channel.synchronous.SynchronousDialogueChannel.access$600(SynchronousDialogueChannel.java:97)
2015-09-21T19:03:02.29+0200 [App/0] ERR [err] at com.nuecho.rivr.core.channel.synchronous.SynchronousDialogueChannel$1.run(SynchronousDialogueChannel.java:239)
2015-09-21T19:03:02.30+0200 [App/0] ERR [err] ... 1 more
Может быть, я должен принимать какие-либо действия с com.nuecho.rivr.core.channel.Timeout я поймать в моем диалога код, чтобы предотвратить их (в настоящее время я просто вернуться с
return new Exit("exit");
Спасибо за любую помощь
Это немного странно. Это означает, что результат вашего диалога не потребляется DialogueServlet в течение 5 секунд. На этом сервере много нагрузки? – gawi
Нет, совсем нет. Это единственное приложение на сервере. Диалог выполняет несколько действий и, возможно, занимает более 5 секунд, так как запрашивает, записывает сообщение, транскрибирует его с помощью голоса, чтобы воспользоваться услугами внешнего API, выполнять другую задачу API при транскрипции и отправлять результаты. Все эти задачи занимают, вероятно, более 5 секунд, но я думаю, это не означает, что метод run() в диалоговом режиме не потребляется за 5 секунд.включать ли временные метки и регистрировать их через метод run()? Большое спасибо за вашу помощь. – icordoba
Этот тайм-аут не зависит от кода приложения. Окончательный send() - это шаг, на котором результаты диалога (т.е. то, что вы возвращаете из метода Dialogue.run()) отправляются сервлету через синхронную очередь. Я не понимаю, почему DialogueServlet займет больше 5 секунд, чтобы сделать take(). Вы действительно что-то вернули? Бросает ли ваш диалог? – gawi