我需要使用批量Web服务,我发送一个唯一的ID来识别自己,然后服务发回一个唯一的响应ID,我将在几分钟后使用它来获取我需要的信息。 一般来说,有什么方法可以跟踪响应ID并在以后再次调用服务以获得真正的响应?
答案 0 :(得分:0)
简单的解决方案是将ID和时间戳粘贴到地图*或列表中,然后在单独的线程中循环,唤醒并处理所有早于特定年龄的ID。 (确保地图或列表是线程安全的。)但是,如果您的应用程序出现故障并重新启动,它将失去对待处理请求的跟踪。如果必须处理该情况,请使用数据库。
* 一个特定的解决方案是使用由时间戳键入的SortedMap。您必须确保每个时间戳都是唯一的,因此您应该期望不会在映射中每毫秒放置多个元素。然后将ID放入映射中,让时间戳为System.currentTimeMillis(),并且时间戳已经是映射中的键,则递增它。然后将(时间戳,ID)对放入SortedMap。这个解决方案很方便,因为循环线程可以从头开始读取SortedMap的元素,直到它们太新然后停止,因为所有最旧的元素都在地图的开头。