У меня есть код, который
1-преобразовывает некоторые данные в JSONObject
2-добавляет JSONObject в очередь
3-peek () JSONObject из очередии отправьте его во внешний API
4 - если получите 200, удалите JSONObject из очереди.если получить 5xx, повторно отправьте этот объект снова.
Ниже приведен код, который я сделал до сих пор.
public class QueueProcessor {
private static Queue<JSONObject> objectQueue;
static {
objectQueue = new ObjectQueue<JSONObject>();
}
public void addToQueue(JSONObject json) {
objectQueue.add(auditEvent);
//do some *ASYNCHRONOUSLY* process with the queue items
sendRequest(persistantQueue.peek());
}
public void sendRequest(JSONObject json) {
Client client = ClientBuilder.newClient();
WebTarget baseTarget = client.target("someUrl");
Invocation.Builder builder = baseTarget.request();
Response response = builder.post(Entity.entity(json.toString(), MediaType.APPLICATION_JSON));
int code = response.getStatus();
if (200 == code) {
objectQueue.remove();
}
if (500 <= code) {
//resending the object
}
}
Мой вопрос заключается в методе addToQueue, что мне нужно реализовать, чтобы сделать это целоепроцесс быть асинхронным?