Есть ли в Thrift определения асинхронных методов на стороне сервера для Java?

Я могу подключить HsHaServer и асинхронный клиент на Java и заставить все это работать плавно. Проблема в том, что для действительно асинхронных сервисов не существует асинхронного интерфейса. Интерфейс сервиса примерно такой

общедоступный TSomeReposonse doStuff (параметры TSomeParams);

что требует от меня блокировки внутри doStuff, пока я не буду готов вернуть TSomeResponse

Есть Async.Iface

public void doStuff(параметры TSomeParams, AsyncMethodCallback[AsyncClient.doStuff_call]);

но похоже, что это только для клиентской стороны. Кажется, нет способа передать значение в обратный вызов. Прав ли я в этом? Если мне нужна настоящая асинхронность на стороне сервера, нужно ли мне реализовывать собственный клиент/сервер с чем-то вроде netty?

Спасибо, Эндрю


person Andrew    schedule 06.11.2012    source источник
comment
Какашки. Это то, о чем я думал. Спасибо.   -  person Andrew    schedule 08.11.2012
comment
@Андрей, у меня сегодня тот же вопрос. Это все еще верно?   -  person Peter    schedule 12.04.2016


Ответы (1)


Этот вопрос довольно старый (вероятно, для этого есть значок), но на всякий случай, если это актуально для кого-то, ответ - да. Это называется асинхронной обработкой — см. здесь: https://issues.apache.org/jira/browse/THRIFT-1972

Он использует тот же интерфейс, что и асинхронный клиент.

Однако об этом почти смехотворно не хватает документации.

person Barak    schedule 26.06.2018
comment
Насколько я могу судить, все еще работает: postimg.cc/fS7rNDJX - person Barak; 09.09.2020