Как мне продолжать читать бесконечный поток с отказоустойчивостью - PullRequest
0 голосов
/ 15 января 2012

В настоящее время я работаю над приложением, которое читает поток из API Twitter и разбирает его на объекты. Сейчас я читаю поток и использую ReadObject из DataContractJsonSerializer для создания своих объектов.

Это прекрасно работает !!

ОДНАКО: Я немного беспокоюсь о том, что произойдет, если моя программа перехватит поток (интернет замедляется или работает) и не хватает данных для анализа ... Метод, вероятно, вызовет исключение, но я хотите дождаться новых данных, затем повторите тот же объект и продолжите.

Также мне было интересно, как сделать метод более стабильным на случай, если поврежденные данные попадут в поток или что-то в этом роде.

Заранее спасибо за любые ответы / идеи:)

1 Ответ

0 голосов
/ 15 января 2012

Если ваша программа догоняет канал Twitter, DCJS должен просто блокироваться, пока вы не получите достаточно данных для завершения чтения.Обычно это не проблема, потому что потоки спроектированы так, чтобы скрыть задержку от своих читателей.

Скорее всего, вы не догоните, а продолжите отставать, пока не закончится память, бросьтеOOME, и программа завершится сбоем.

Я бы посоветовал вместо того, чтобы пытаться анализировать поток на лету, записывать его в нечто вроде файла и читать из него (возможно, даже параллельно, используя циклические файлыили что-то).

...