我有处理引擎,它只能通过队列接口对我可用(公开)。
我想将基于 Que 的接口抽象为一个简单的阻塞接口,可以由多个线程同时调用。
单个 JVM 进程每秒将调用此接口大约 500 次。
高层次的问题是:如何将基于 Que 的接口转换为 Java 中的线程安全阻塞函数调用。
笔记:
- 我将请求放在 Request_Q
请求是我生成唯一 id 的表单的 JSON 对象,有效负载是我要处理的消息:
{id:1234567890,有效载荷:“foo”}
引擎完成处理此请求后,它将响应放入队列 Response_Q
响应消息与请求对象的形式相同,只是payload对应于处理后的消息,id与请求对象相同。例如,对所述请求对象的响应可能如下所示:
{id:1234567890,有效载荷:“bar”}
- 我弹出 Response_Q 的消息
我希望将这个基于队列的处理系统封装在以下形式的传统阻塞函数调用中:
public String process (String payload) {
JSONObject request = new JSONObject();
request.set("id", /* ... some way to generate a random key */ );
request.set("payload", payload);
// push the request onto Request_Q
// Question
// What is an elegant way to organize the code from here down?
}