碰到java17下搭建rocketMQ报这个,该如何解决?

碰到java17下搭建rocketMQ,broker_default.log 报instrumneted a sprcial java.util.Set into : sun.nio.ch.EPollSelectorImpl 该如何解决

展开
收起
2401。 2023-08-27 16:57:35 735 分享 版权
1 条回答
写回答
取消 提交回答
  • 这个警告消息是由于JDK 17对Java agent instrumentation的新规则导致的。RocketMQ底层使用了netty和EpollSelector,而在JDK 17中,对特定的类(如sun.nio.ch.EPollSelectorImpl)进行了限制,不允许在运行时进行instrumentation。

    目前,可以采取以下两种解决方法之一来解决这个问题:

    忽略警告:因为这只是一个警告,不会影响RocketMQ的正常运行,可以忽略该警告。可以通过在启动RocketMQ Broker时增加如下参数来忽略该警告:-Dio.netty.tryReflectionSetAccessible=false。
    降级JDK版本:如果RocketMQ在JDK 17下仍然无法正常运行,可以降级到一个较低的JDK版本,比如JDK 11或 JDK 8。在这些版本的JDK下,不会出现这个警告消息。

    注意,在降级JDK版本之前,需要确保RocketMQ的其他依赖也能够与该JDK版本兼容。

    无论采用哪种方法,都要确保RocketMQ的配置和依赖项正确,并且RocketMQ Broker能够正常启动和运行。在解决问题时,请参考RocketMQ的文档和相关资源,以获取更多的信息和指导。
    例如,使用以下命令启动RocketMQ Broker:

    2023-09-19 11:06:29
    赞同 展开评论

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/

还有其他疑问?
咨询AI助理