2015-06-05 2 views
2

Я хочу развернуть вертикаль после получения ответа от моей шины событий, которая вызывает модуль mysql.vertx развернуть вертикаль после получения ответа от шины события


String query = "select * from fca_config WHERE name='siteFaultCollectionStatus'"; 
JsonObject selectQuery = new JsonObject(); 
selectQuery.putString(OPERATION.ACTION.Value(), OPERATION.RAW.Value()); 
selectQuery.putString(OPERATION.COMMAND.Value(), query); 
List<String> list = new ArrayList<String>(); 
list.add("siteFaultCollectionStatus"); 

System.out.println(selectQuery); 

EventBus eb = vertx.eventBus(); 
eb.send("database.mysql", selectQuery, new Handler<Message<JsonObject>>() { 
    public void handle(Message<JsonObject> result) { 
     String results = result.body().getArray("results").toString(); 
     String arrs[]=results.split(","); 
    System.out.println("I received a reply before the timeout of 5 seconds"+arrs[1]); 
    res=arrs[1]; 
    } 
}); 
if(res.equals("true")){ 
    deployVerticles(); 

После получения ответа (истина/ложь) от этого я хочу, чтобы развернуть модуль, но прежде, чем получить ответ от этого моя вертикаль становится развернуто.

ответ

0

Вы должны включить свой метод развертывания в теле обработчика ответа, так что она вызывается один раз автобуса события послало сообщение, получил ответ и осмотрели тело ответного сообщения:

// ... 
JsonObject selectQuery /* the query initialization goes here */; 
// ... 
vertx.eventBus().send(
    "database.mysql", 
    selectQuery, 
    new Handler<Message<JsonObject>>() { 
    public void handle(Message<JsonObject> result) { 
     String results = result.body().getArray("results").toString(); 
     String arrs[]=results.split(","); 
     System.out.println("I received a reply before the timeout of 5 seconds"+arrs[1]); 
     res = arrs[1]; 
     if(res.equals("true")) { 
     deployVerticles(); // Triggering verticle deployment goes within your response handler 
     } 
    } 
    } 
); 
Смежные вопросы