1
我使用EventBus發送一個信息,我想要得到的回覆消息到一個變量,然後將返回it.this是代碼塊。未來在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;
}
}
其實這是一些次工作fine.But雖然從未塊平均exit.Its future.result()沒有得到值,即使是回覆消息後received.I不知道這個正確的方法而且我對於期貨在vert.x中的工作方式並不清楚。是否還有其他方法來實現這種情況。
一個習語用法未來的'<> ''將有'sendMessage'返回'未來'並立即返回,而不是阻止...這是一個選項嗎? –
tariksbl