Тема: Многопоточная выгрузка сообщений
Добрый день!
Понадобилось выгружать с помощью SDK сообщения по всем объетам с Wialon Hosting в несколько потоков.
Работает по стандартному алгоритму:
1. Логин (получение sid)
2. Получение списка доступных объектов
3. Разделение списка доступных объектов на x частей (сейчас по 5 в одной части)
Далее для каждой части запускается отдельный поток, таких потоков определенное количество (сейчас 10 потоков)
Алогоритм работы одного потока следующий:
1. Логин (получение sid)
2. Создается и выполняется пакетный запрос (core/batch) для получения сообщений x объектов
3. Сообщения обрабатываются
4. Логаут
В случае возникновения ошибки на любом этапе работы потока он разрушается и перезапускается снова, т.е. по новой цикл с 1 по 4.
Проблема следующая - при запуске все работает какое-то недолгое время, после чего в потоках на этапе 1 (логин) возникает ошибка 1003 (Только один запрос разрешается в данный момент времени). Так происходит также недолгое время и все снова начинает работать обычном режиме. Такоц цикл периодичен и не прекращается - работает/1003/работает/1003. Причем кажется что это примерно один и тот же промежуток времени.
Есть одно подозрение - потоки одновременно пытаются запрашивать логин, в wialon приходит одновременно какое-то количество запросов и получается ошибка. Через какое-то время потоки рассинхронизируются и начинают делать это в разное время и все начинает работать по прежнему.
Подскажите, из-за чего такое может происходить?