Я использую трикотажный клиент для отправки POST-запросов стороннему веб-сервису. Поскольку создание трикотажных клиентов обходится дорого, я делаю это внутри конструктора класса клиента службы, которым управляет Spring. Я думаю, что когда мой сервер запустится, Spring создаст мой сервисный клиентский компонент, который, в свою очередь, вызовет вызов конструктора, и поэтому мой клиент из трикотажа будет создан один раз. Пока сервер работает, этот клиент-трикотаж будет отвечать за отправку запросов, и дальнейшая инициализация клиента не требуется. Тем не менее, я буду создавать новый веб-ресурс для каждого звонка, так как создание трикотажных веб-ресурсов намного дешевле.
package com.mypackage;
//Bunch of imports
class MyWebserviceClient {
//jersey client member variable
private Client jClient;
public MyWebserviceClient(){
//Create jersey client
jClient = Client.create();
//Other stuff
}
public void sendRequest(){
WebResource wr = jClient.resource(someUrl);
//Use the webresource to make webservice call
}
}
MyWebserviceClient
управляется Spring как таковой в XML-файле конфигурации Spring:
<bean id="myClient" class="com.mypackage,MyWebserviceClient"></bean>
Затем bean-компонент myClient
будет внедрен в соответствующее место, где необходимо выполнить вызов службы.
Мои вопросы
1) Если мое приложение обрабатывает тысячи запросов в час, достаточно ли оно эффективно, чтобы обрабатывать все запросы только с одним клиентом из трикотажа.
2) Нужен ли мне какой-то трикотажный клиентский пул, чтобы более эффективно обрабатывать большое количество запросов. Если да, то есть ли способ сделать это?
3) Я хотел бы знать в целом, как множественные запросы, поступающие от конечных пользователей, обрабатываются на стороне сервера. Каждый запрос представляет собой отдельный поток выполнения на сервере, и все они имеют доступ к одному и тому же объекту клиента трикотажа. Если клиентский объект трикотажа занят одним таким запросом, будут ли другие запросы от разных конечных пользователей ждать, пока не будет получен ответ на текущий запрос?
4) Любая лучшая альтернатива той, которую я использую.