来自 Vertx 和 AMQPBridge 的 Java 运行时警告

标签 java amqp vert.x

我正在将以下 Java 代码片段与 Vertx IO 用于 AQMP 1.0:

    this.vertx = Vertx.vertx();

    AmqpBridge bridge = AmqpBridge.create(this.vertx);

    // Start the bridge, then use the event loop thread to process things
    // thereafter.
    bridge.start(hostname, port,
            username, password, res -> {

                // Set up a consumer using the bridge, register a handler for it.
                MessageConsumer<String> consumer = bridge
                        .createConsumer(this.processorConfiguration.getQueueName());

                // Add the message handler.
                consumer.handler(vertxMsg -> {
                    String payload = vertxMsg.body();

                    logger.debug("Rx: " + payload);
                });

                consumer.exceptionHandler(error -> {

                    logger.error("Error - " + error.getMessage());
                });
            });
}

当我运行此代码时,我得到:

2019-08-27 10:28:27,071 警告 (Slf4JLogger.java:151) - 触发了 exceptionCaught() 事件,并且它到达了管道的尾部。这通常意味着管道中的最后一个处理程序没有处理异常。 io.netty.channel.ChannelPipelineException:io.vertx.core.net.impl.VertxHandler.handlerAdded() 抛出异常;已删除。 在io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:616) 在 io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:226) 在 io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:192) 在 io.vertx.core.net.impl.NetClientImpl.connected(NetClientImpl.java:233) 在 io.vertx.core.net.impl.NetClientImpl.lambda$doConnect$3(NetClientImpl.java:188) 在 io.vertx.core.net.impl.ChannelProvider.lambda$connect$1(ChannelProvider.java:78) 在 io.vertx.core.net.impl.ChannelProvider.connected(ChannelProvider.java:154) 在 io.vertx.core.net.impl.ChannelProvider.lambda$handleConnect$2(ChannelProvider.java:137) 在 io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:514) 在 io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:507) 在 io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:486) 在 io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:427) 在 io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:111) 在 io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:82) 在 io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:300) 在 io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:335) 在 io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:588) 在io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:512) 在io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:426) 在io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:398) 在io.netty.util.concurrent.SingleThreadEventExecutor $5.run(SingleThreadEventExecutor.java:877) 在 java.lang.Thread.run(Thread.java:748) 引起原因:java.lang.IllegalAccessError:尝试从类io.vertx.core.net.impl.ConnectionBase访问类io.netty.channel.VoidChannelPromise 在 io.vertx.core.net.impl.ConnectionBase.(ConnectionBase.java:72) 在 io.vertx.core.net.impl.NetSocketImpl.(NetSocketImpl.java:84) 在 io.vertx.core.net.impl.NetClientImpl.lambda$connected$4(NetClientImpl.java:219) 在 io.vertx.core.net.impl.VertxHandler.handlerAdded(VertxHandler.java:102) 在io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:597) ... 21 更多

这只是一个警告,但这是我需要解决的问题吗?我似乎无法找出未处理的异常是什么。我目前无法让我的应用程序接收任何消息,因此我正在尝试弄清楚这是否相关,或者(更有可能)我正在做其他愚蠢的错误。

我想当我使用 AmqpClient 时得到了同样的警告:

https://vertx.io/docs/vertx-amqp-client/java/

谢谢

最佳答案

发布后不久我灵机一动,检查了我正在使用的 POM 文件。其中一个依赖项是使用旧版本的 Netty,这导致了此警告。我升级了依赖项,它使用了新版本的 Netty,警告消失了,我现在可以接收消息了。干杯!

关于来自 Vertx 和 AMQPBridge 的 Java 运行时警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57677503/

相关文章:

java - 为什么在映射到 Callable<T> 时需要显式提供类型参数?

java - 如何从 Clojure 调用我自己的 Java 类中的静态方法?

activemq - 如何使用 .NET Core 中的 AMQP.Net Lite 库以及 clientId 和订阅者名称以及主题名称来创建持久的发布者/订阅者主题

java - 我们到底需要做什么才能通过 AMQP 从 Linux 上的 Java 客户端使用本地 Service Bus

java - 使用 Vert.x 事件总线 'locally'(java,单个 jvm)时是否可以避免序列化?

Vert.x Infinispan 获取 "failed sending discovery request to/228.6.7.8:46655"

java - 开始在数组上使用 java。尝试对重复的金额进行分组

python - 我应该在 Django 项目中使用 Celery 还是 Carrot?

javascript - 带有 MEAN.js 的 node-webkit

java - 在 Flex 中渲染具有动态列的数据网格