碰到java17下搭建rocketMQ,broker_default.log 报instrumneted a sprcial java.util.Set into : sun.nio.ch.EPollSelectorImpl 该如何解决
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个警告消息是由于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:
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/