После чтения результатов тестов zeromq мне было интересно, могу ли я попробовать попробовать получить доступ к API ReSTFul через HTTP GET-вызовы через zeromq. Я хочу проверить, может ли zeromq предоставить механизм запроса-ответа с низкой задержкой по сравнению с другими альтернативами, такими как API-интерфейс jersey, HTTPurl, Apache hc и т. Д. Я хочу, чтобы это реализовано в Java, вот что я пытаюсь сделать, в соответствии с обучающейInvoke HTTP GET over zeromq
XREP -> HTTP client с этим можно повторно использовать существующий веб-приложение, работающее на HTTP-сервере в качестве рабочих серверной для очереди. Это похоже на обратный HTTP-прокси-сервер, который балансирует нагрузки на нескольких серверах HTTP.
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket requester2 = context.socket(ZMQ.XREP);
requester2.connect("http://domainURL/path");
Но это не так, как я получаю
java.lang.UnsupportedOperationException: http
Я знаю, что я не закодированы это правильно, но это будет полезно, если какие-либо рекомендации или фрагменты кода в Java предусмотрены?
EDIT Я нашел ресурс, где код питона звонит удаленный веб-сервис, как
import json
import zmq
# set up zmq socket
sock = zmq.Context.instance().socket(zmq.REQ)
sock.connect('ipc:///tmp/zurl-req')
# send request
req = {
'method': 'GET',
'uri': 'http://example.com/path'
}
sock.send('J' + json.dumps(req))
# print response
print json.loads(sock.recv()[1:])
Так что я пытаюсь изменить мой код Java, как показано ниже:
import org.zeromq.ZMQ;
public class hwclient {
public static void main(String[] args) {
ZMQ.Context context2 = ZMQ.context(1);
ZMQ.Socket sock = context2.socket(ZMQ.REQ);
sock.connect("ipc:///tmp/zurl-req");
String req = "{\n" +
" 'method': 'GET',\n" +
" 'uri': 'http://domainURI/path/" +
"}\n";
sock.send(req);
System.out.println("-->" + new String(sock.recv(0)));
context2.term();
}
}
Но теперь проблема в том, что я не знаю, какая должна быть величина вместо "ipc:///tmp/zurl-req"
видели пример [здесь] (https://github.com/fanout/zurl#description) –