Vert.x RabbitMQ кодирует исключение NullPointerException - PullRequest
0 голосов
/ 07 августа 2020

Я работаю с Java8 в Vert.x 3.9.2 и vertx-rabbitmq-client той же версии. Я пытаюсь опубликовать sh сообщение для обмена, но независимо от конфигурации обмена (тема / разветвление) выдается одно и то же исключение:

 java.lang.NullPointerException
        at io.vertx.rabbitmq.impl.Utils.encode(Utils.java:179)
        at io.vertx.rabbitmq.impl.RabbitMQClientImpl.lambda$basicPublish$8(RabbitMQClientImpl.java:213)
        at io.vertx.rabbitmq.impl.RabbitMQClientImpl.lambda$forChannel$34(RabbitMQClientImpl.java:488)
        at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:313)
        at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:834)

Это мой код:

          amqpClient
             .exchangeDeclare(
                "orders", // name
                "topic", // type
                true, //durable
                false, //autodelete 
                exchangeDeclareResult -> {
                    if (exchangeDeclareResult.succeeded()) {
                        amqpClient
                            .basicPublish(
                                "orders", 
                                "test",
                                new JsonObject()..... // Another properties
                                publishResult -> {
                                    if (publishResult.succeeded())
                                        mainPromise.complete();
                                    else {
                                        publishResult.cause().printStackTrace();
                                        mainPromise.fail(publishResult.cause());
                                    }
                                });
                    } 
                    else
                        mainPromise.fail(exchangeDeclareResult.cause());
                }
            );

Думаю, проблема в сериализации json контента. Каждое свойство в моем теле имеет содержание, я имею в виду, что нет нулевых значений. Еще одна проблема, которую я могу заметить, - это сообщение в исключении во время отладки:

NullPointerException@91 "java.lang.NullPointerException"
cause: NullPointerException@91 "java.lang.NullPointerException"
depth:9
backtrace Object[5]@99
stackTraceElement[9]@133
suppressedExceptions: Collections$EmptyList@101 size=0

Заранее спасибо.

1 Ответ

1 голос
/ 07 августа 2020

Имеет ли объект new JsonObject()... // Another properties свойство body со строковым значением? Это то, что basicPuli sh извлекает из сообщения. Обратите внимание, что отсутствие свойства может вернуть значение null. Так что недостаточно, если все ваши свойства имеют ненулевые значения, у вас также должны быть все необходимые свойства :)

...