消息队列 Send message to broker timeout, 5000ms

消息队列发送消息抛如下异常时,请检查网络环境是否有波动。

com.aliyun.openservices.ons.api.exception.ONSClientException: Send message to broker timeout, 5000ms

公网环境的波动性较大,多数情况下,公网环境会出现这种问题,那么请执行:

curl http://onsaddr-internet.aliyun.com:80/rocketmq/nsaddr4client-internet

ping onsaddr-internet.aliyun.com

同时,在业务应用层观察并统计一下,由于超时引起的消息生产失败比例大概为多少和异常的时间段范围。如果是长时间持续的高失败率,建议用户换一个稳定些的公网环境或者是使用阿里云内网环境。

如果是内网环境(使用的 Topic 为内网,且发送端,消费端部署在相应地域 ECS 上)出现这样的异常,那么请执行:

curl http://onsaddr-internal.aliyun.com:8080/rocketmq/nsaddr4client-internal
ping onsaddr-internal.aliyun.com
将命令执行结果,消息生产失败比例,异常发生时间段范围和本地的 SDK 日志,提供给后端排查定位。如果问题还未能解决,请联系售后技术支持。

展开
收起
猫饭先生 2017-10-30 10:00:55 5982 分享 版权
阿里云 AI 助理回答

当您遇到消息队列发送消息时出现ONSClientException: Send message to broker timeout, 5000ms的异常信息,这通常意味着消息发送到Broker服务器超时。根据您的网络环境(公网或内网),有不同的排查步骤:

公网环境下的排查步骤:

  1. 检查网络连通性

    • 执行命令 curl http://onsaddr-internet.aliyun.com:80/rocketmq/nsaddr4client-internet 来获取公网Broker地址。
    • 使用 ping onsaddr-internet.aliyun.com 检查与阿里云ONS服务的网络连接是否稳定。
  2. 统计失败比例和时间段

    • 观察并记录由于超时导致的消息生产失败的具体比例以及异常发生的时间段。这有助于分析问题是否具有持续性和规律性。
  3. 评估网络环境稳定性

    • 如果发现长时间存在高比例的发送失败,考虑更换为更稳定的网络环境或考虑使用阿里云内网环境进行消息传输,以减少公网波动的影响。

内网环境下的排查步骤:

  1. 获取内网Broker地址

    • 执行命令 curl http://onsaddr-internal.aliyun.com:8080/rocketmq/nsaddr4client-internal 获取内网Broker地址。
    • 使用 ping onsaddr-internal.aliyun.com 确认与内网ONS服务的连通性。
  2. 收集日志和详细信息

    • 统计消息生产失败的比例、异常发生的具体时间段,并收集本地SDK的日志文件。
  3. 联系技术支持

    • 如果以上步骤未能解决问题,整理好上述所有信息(包括命令执行结果、失败比例、异常时间范围及SDK日志)并联系阿里云售后技术支持进一步排查。

注意事项:

  • 确保ECS实例的安全组规则允许访问ONS服务端口。
  • 检查应用代码中消息发送的配置,如超时时间、重试策略等,适当调整可能改善情况。
  • 考虑到资源使用的最佳实践,如果业务规模较大或对稳定性要求极高,建议采用专有网络VPC并利用内网通信,以获得更稳定的服务质量。

通过这些步骤,您可以逐步定位并解决消息发送超时的问题。如果问题复杂或需要专业技术支持,请及时联系阿里云官方客服获取帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

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

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