2016-07-21 7 views
2

Ich benutze vert.x 2.1.5 Version. Und ich habe versucht, Event-Looping in meinem Projekt zu verwenden. Beispielcode unten angegebenVert.x Event-Looping mit einem einzigen Thread

JsonObject result = null; 
//loop starting 
for (int i=0;i<length;i++) 
{ 

final JsonObject jsonObject1 = jsonObject.getArray("result").get(i);               
int x = jsonObject1.getInteger("X"); 
String Data = "X="+x+"&Y="+y; 
//calling another event 
vertx.eventBus().send("event1", Data,new Handler<Message<String>() {public void handle(Message<String>response) 
{ 
JsonObject jsonObject = new JsonObject(response.body()); 
result_arry.addArray(jsonObject.getArray("details")); 
              } 
}); 
} // loop end 
result = resultJson("Ok",result_arry); 
//it will create one json object with proper format 
message.reply(result.toString()); 

In diesem Code gibt mein Ereignisbus vor dem Ausführen der Ereignisschleife einen Wert zurück. Ich muss meine Ausgabe als Ereignis Schleife Ausgang Wie kann ich erreichen, dass

Antwort

0

Grundsätzlich ist das Problem, dass Sie nicht darauf warten, dass Nachrichten ankommen. Für mein Beispiel habe ich den größten Teil der Json-Logik entfernt.

Vertx vertx = Vertx.vertx(); 
int messages = 10; 

// First register your consumer 
MessageConsumer<JsonObject> consumer = vertx.eventBus().consumer("event1"); 
consumer.handler(o -> { 
    System.out.println("Got message" + o.body()); 

    // Consumer replies to sender with the same message 
    o.reply(o.body()); 
}); 

// Now send your messages 
for (int i=0;i<messages;i++) { 
    JsonObject data = new JsonObject(); 
    data.put("value", i); 

    vertx.eventBus().send("event1", data, response -> { 
     if (response.succeeded()) { 
      // Each time consumer replies, print it 
      System.out.println("Consumer replied: " + response.result().body()); 
     } 
    }); 
} 

Beachten Sie, dass die Antwort innerhalb Handler Körper ist, und dass Absender muss sicherstellen, dass Antwort erfolgreich ist es vor dem Zugriff.

Verwandte Themen