1
私はEventBusを使用してメッセージを送信しています。返信メッセージを変数に取り込み、それを返します。これがコードブロックです。ブロック決してexit.Itsはfuture.resultを(平均しながら Vert.xでの将来の仕組みは?
public class MessageExecute {
private static final Logger logger = LoggerFactory.getLogger(MessageExecute.class);
public static <T> T sendMessage(Vertx vertx,String address,T message){
Future<Message<T>> future = Future.future();
vertx.eventBus().send(address, message, future.completer());
future.setHandler(new Handler<AsyncResult<Message<T>>>() {
@Override
public void handle(AsyncResult<Message<T>> event) {
logger.info("received reply message | thread - " + Thread.currentThread().getName());
}
});
boolean notFound = true;
while(notFound){
try{
if(future.result()!= null){
notFound = false;
}
}catch(Exception e){
}
}
return message;
}
}
は、実はこれはreceived.Iは、この正しい方法を知らないされても、応答メッセージの後、値を得ていない)、いくつかの回をfine.But取り組んでいますFuturesがVert.xでどのように機能しているかについては明確な考えがありません。これらのシナリオを実装するための他の方法はありません。
'フューチャー<の慣用的な使用を> 'sendMessage'が' Future 'を返し、ブロッキングの代わりにすぐに戻ります。これはオプションですか? –
tariksbl