Передача URI / пути к контексту в Asyn c клиенте - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь построить клиент Asyn c. Ниже приведен код, который я создаю.

TNonblockingTransport transport = new TNonblockingSocket("127.0.0.1", 8080);
TAsyncClientManager clientManager = new TAsyncClientManager();
TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();
TCalculator.AsyncClient client = new TCalculator.AsyncClient(protocolFactory,clientManager,transport); 

Мой сервер работает на http://localhost: 8080 / калькулятор

Не могли бы вы помочь мне, как передайте здесь uri.

В случае, если клиент syn c это просто.

 TTransport transport;
  transport = new THttpClient("http://localhost:"+8080+"/calculator");
 transport.open();

Stacks used: Spring boot 2.2.1 & thrift.9

Или я неправильно создаю TNonblockingTransport.

1 Ответ

0 голосов
/ 10 февраля 2020

По сути, вы должны использовать TNonblockingSocket , чтобы использовать транспорт неблокирующим способом. Измените определение транспорта, чтобы использовать конфигурацию SocketChannel , которая будет выглядеть следующим образом:

InetSocketAddress примет порт и URL для вас:

 try (SocketChannel socketChannel = SocketChannel.open()) {
        socketChannel.connect(new InetSocketAddress("localhost", port));
        TNonblockingTransport transport = new TNonblockingSocket(socketChannel);
}

 final Asker.AsyncClient client = new Asker.AsyncClient(
                new TCompactProtocol.Factory(),
                new TAsyncClientManager(), transport);
...