2016-05-30 3 views
0

Я пытаюсь понять, как обрабатывать прерывистую сетевую связь в отношении Amazon SQS на Android. Мне нужно отправлять сообщения каждые 10 минут (или так) и хотелось бы, чтобы сообщения, которые не могут быть доставлены из-за сетевых проблем, отправляются в самое ближайшее время, когда сеть восстанавливается. Мои размещенные сообщения об обслуживании заказываются, поэтому получение нескольких сообщений в очереди сразу не является проблемой, но проблема с полностью отбрасыванием сообщений является проблемой.Ручка Amazon SQS (Android) прерывистая сетевая связь

AFAIK, моя политика повторной попытки настроена на повторение до 25 раз, а затем сдаться. Очевидно, что это не очень хорошее решение, но я не видел никаких крючков для обратных вызовов для подключения к сети или какой-либо опции, чтобы повторить попытку, когда соединение будет восстановлено, если причина ошибки связана с сетевыми проблемами.

Единственная альтернатива, о которой я могу думать (используя то, что знаю об этом API), заключается в реализации ОЧЕНЬ долговечной стратегии возврата и надеюсь, что пользователь снова получит сеть с X-м временем, но это кажется неправильным.

ClientConfiguration ccfg = new ClientConfiguration(); 
      ccfg.setRetryPolicy(new RetryPolicy(null, null, 25, false)); 
      AmazonSQSClient client = new  
AmazonSQSClient(params[0].credentialsProvider, ccfg); 

ответ

1

Установка политики повтора не поможет вам в этом случае.

Что вы, возможно, нужно сделать, это:.

  1. Cache SQS сообщения, когда сеть не доступна на мобильном телефоне (либо файл или БД).

  2. Внедрите прослушиватель сетевых изменений на андроидах и вызовите вызовы sqs, когда сети изменятся с недоступных до достижимых.

Посмотрите на https://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html

Смежные вопросы