我试图弄清楚如何处理Android上的Amazon SQS的间歇性网络连接。我需要每隔10分钟(或左右)发送一次消息,并希望在网络恢复的最早时间发送因网络问题而无法发送的任何消息。我的托管服务命令消息,因此一次获取几个排队的消息没有问题,但完全删除消息是一个问题。
AFAIK,我的重试政策将重试最多25次,然后放弃。显然这不是一个很好的解决方案,但我没有看到网络连接回调的任何钩子,或者如果错误的原因是由于网络问题导致连接恢复时重新启动它的任何选项。
我能想到的唯一选择(使用我对此API的了解)是实施非常持久的退避策略并希望用户在X时间内再次获得网络,但这似乎是不正确的。
ClientConfiguration ccfg = new ClientConfiguration();
ccfg.setRetryPolicy(new RetryPolicy(null, null, 25, false));
AmazonSQSClient client = new
AmazonSQSClient(params[0].credentialsProvider, ccfg);
答案 0 :(得分:1)
在这种情况下,设置重试策略不会对您有所帮助。
您可能需要做的是:
在移动设备上无法访问网络时缓存sqs消息(文件或数据库)。
在android上实现网络更改侦听器,并在网络从无法访问变为可达时触发sqs调用。
查看https://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html