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