Как устранить ошибку: не удается найти символ message.reply (...); Vertx точка-точка - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть два java класса, которые общаются с помощью vert.x EventBus.

У меня есть Производитель. java класс:

package TP1;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.eventbus.EventBus;
import io.vertx.core.json.JsonObject;

public class Productor extends AbstractVerticle 
{
    public void start() throws Exception
    {
        System.out.println("> Launching Productor...");

        EventBus ebReady = vertx.eventBus();

        //Send ready message
        ebReady.send("canal-ready", "ready", messageReady -> {

            //If Consumer received the ready message
            if(messageReady.succeeded())
            {
                //Parse json response
                JsonObject jsonObject = new JsonObject(messageReady.result().body().toString());

                //Get answer value
                int answerValue = Calcul.factorial(jsonObject.getInteger("param"));

                String answer = Integer.toString(answerValue);

                messageReady.reply(answer);//ERROR HERE
            }
            else
                System.out.println("> No response!");
        });
    }
}

и Потребитель. java class:

package TP1;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.eventbus.EventBus;
import io.vertx.core.json.JsonObject;

public class Consumer extends AbstractVerticle 
{
    public void start() throws Exception
    {
        System.out.println("> Launching Consumer...");

        String jsonString = "{\"class\":\"Calcul\",\"method\":\"factoriel\",\"param\":5}";
        JsonObject jsonObj = new JsonObject(jsonString);

        EventBus ebReady = vertx.eventBus();

        //Wait for ready message
        ebReady.consumer("canal-ready", messageReady -> {

            //Parse the ready message
            String readyString = messageReady.body().toString();

            //Make sure it's the ready message
            if(readyString.equals("ready"))
            {
                //Send json back (messageReady.succeeded())
                messageReady.reply(jsonObj, messageReadyReply -> {
                    System.out.println(messageReadyReply);
                });
            }
        });
    }
}

Я не могу построить класс Productor, но у меня нет проблем с Consumer.

Что не так с частью messageReady.reply(answer); в Productor. java класс?

1 Ответ

1 голос
/ 29 февраля 2020

Вы пропустили вызов result() (см. здесь ) до получения сообщения и выполнения методов для него. Однако вы используете методы, которые устарели в версии 3.8 ( пример ) и отсутствуют в версии 4.0, поэтому я бы посоветовал вам использовать другую подпись.

...