简介

常见问题

logActivity 选项已启用,但没有日志输出

大多数 Vert.x 网络客户端或服务器都有一个 logActivity 选项,用于启用网络活动日志记录。启用后,Netty 的管道将配置为在 Netty 的日志记录器上以 DEBUG 级别进行日志记录。

这就是为什么仅打开 logActivity 选项是不够的。您还需要在日志框架配置中将 io.netty.handler.logging.LoggingHandler 日志记录器设置为 DEBUG 级别。


如果 Vert.x 是集群的,当节点崩溃时,事件总线消息会怎样?

当您在事件总线上发送消息时,它会被发送到接收方节点并存储在内存中,直到被处理。它不会持久化到磁盘或数据库。

因此,如果接收方节点在消息被处理之前崩溃,消息将丢失。

如果无法容忍某些消息的丢失,有以下几种选择:

  • 发送失败时进行幂等重试
  • 异步确认

否则,请考虑使用功能齐全的基于代理的消息系统,例如 Apache ActiveMQRabbitMQ

Vert.x 为这些解决方案提供了客户端:Vert.x AMQP 客户端Vert.x 的 RabbitMQ 客户端Vert.x-Stomp


为什么我的事件总线消费者无法接收之前发送的消息?

当您在事件总线上发布消息时,它会被发送到所有注册了相应消息地址的一个或多个消费者的节点。它不会持久化到磁盘或数据库。

因此,现有节点上的新消费者或稍后加入集群的节点将不会收到此消息。

如果您需要此功能,请考虑使用功能齐全的基于代理的消息系统,例如 Apache ActiveMQRabbitMQ

Vert.x 为这些解决方案提供了客户端:Vert.x AMQP 客户端Vert.x 的 RabbitMQ 客户端Vert.x-Stomp


如何使用 JVM 内置的地址解析器?

默认情况下,Vert.x 依赖于非阻塞地址解析器,而不是 JVM 内置的解析器。对于大多数用户来说这是透明的,但非阻塞解析器不够成熟,可能在某些环境中无法正常工作。

在这种情况下,请在 Vert.x 核心存储库 中提交一个问题。

作为一种变通方法,您可以关闭非阻塞解析器并回退到 JVM 内置的解析器。为此,请在启动 JVM 时将 vertx.disableDnsResolver 系统属性设置为 true

-Dvertx.disableDnsResolver=true