RocketMQ问题排查思路

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 1、使用HTTP协议报错500。排查思路: 1). 是不是有tcp的producer在发送。 2). 是不是有大量的非法字符。建议单独建一个topic给http,然后再进行测试。 2、报没有权限: 1). 如果是主账号:确保GID和topic都是主账号创建; 2). 如果是子账号:确保GID是子账号创建,并且topic授权这个ak使用。

1、使用HTTP协议报错500。排查思路:
1). 是不是有tcp的producer在发送。
2). 是不是有大量的非法字符。建议单独建一个topic给http,然后再进行测试。

2、报没有权限:
1). 如果是主账号:确保GID和topic都是主账号创建;
2). 如果是子账号:确保GID是子账号创建,并且topic授权这个ak使用。

3.学会查看日志:
ons.log日志保存路径:/{user.home}/logs/ons.log,其中{user.home}是指启动当前 Java 进程的用户的根目录

4.消息订阅类问题分析思路
1). 先看下程序是否正常运行,如有异常排查日志。如正常运行,检查消费端的消息堆积和订阅关系。如订阅关系不一致,纠正。如有堆积,看具体哪个消费端堆积,可以看堆栈及打jstack来分析。https://help.aliyun.com/knowledge_detail/54347.html
2). 消息接收不到,查看消息ID,通过消息查询去判断消息是否接收,如果显示”至少订阅一次“说明消息肯定被订阅到了,如果消息轨迹看不到,应该是消息轨迹公测存在一定的缺陷,以消息查询结果为准。

5.不保证消息一定不重复,但是保证消息一定不丢失。

6.事务消息会回查频率5秒一次

7..net仅支持Windows系统

8.消息验证中Tag是不生效的。

9.删除监控警报需要在所有账号下进行查看。

10.产品不建议再做二次封装,本身.net SDK的兼容性就不是太好。如果是一定要封装,请先使用SDK测试调通了再进行封装。务必使用64位的方式封装。

  1. .net TCP协议开发,程序必须编译为64位,才能够调用,32位不支持

12.一个CID在消费的时候不管多少个进程、线程、机器,只能用一个tag,否则就会导致消息被不可预期的过滤掉。

13.客户端堆积的是指一次都未消费的堆积消息量,不包含重试的消息。另外报警必须保证消费端在线。

  1. topic的消息类型为顺序消息,则不支持定时/延时消息和事务消息。

15.主账号授权给主账号只能通过STS

16.使用老版本的默认实例会导致发送错误,需要修改NAMESER_ADDR。

17..net中文乱码问题:

添加编码解码类:

/// 编码解码测试类
/// </summary>
public class base6tstring {
    public static string ToBase64String(string value)
    {
        if (value == null || value == "")
        {
            return "";
        }
        byte[] bytes = Encoding.UTF8.GetBytes(value);
        return Convert.ToBase64String(bytes);
    }

    public static string UnBase64String(string value)
    {
        if (value == null || value == "")
        {
            return "";
        }
        byte[] bytes = Convert.FromBase64String(value);
        return Encoding.UTF8.GetString(bytes);
    }
}

发送:

        string myString = "Example message body测试";
        myString = base6tstring.ToBase64String(myString);
        Message msg = new Message(factoryInfo.getPublishTopics(), "tagA", myString);

接收:

        Byte[] text = Encoding.Default.GetBytes(value.getBody());
        string s = System.Text.Encoding.UTF8.GetString(text, 0, text.Length);
        Console.WriteLine(base6tstring.UnBase64String(s));
        return ons.Action.CommitMessage;

18.当一条消息已被成功发送到服务端并完成持久化,此时出现了网络闪断或者客户端宕机,导致服务端对客户端应答失败。 如果此时生产者意识到消息发送失败并尝试再次发送消息,消费者后续会收到两条内容相同并且 Message ID 也相同的消息。
https://help.aliyun.com/document_detail/44397.html
消息重复消费的问题,在互联网场景下,无法规避,用户需要自行做幂等处理。

19.报错(The receipt handle you provided has expired.)消息被客户端获取到后,拿到的句柄没有在message.NextConsumeTime前删除,会报这个错误,一般来说是因为消费消息过慢导致的
20.net sdk也有消费端的ons.log日志,如果遇到错误需要提工单,这个也可以打包提供下。
// 设置日志路径
factoryInfo.setFactoryProperty(ONSFactoryProperty.LogPath, "C://log");
21.接入点是有自动路由机制:
1). 默认的实例是全局唯一的,这样系统根据默认实例的topic能自动路由到正确的接入地址
2). 默认的实例的topic即便接入点配置的不对,也可以找到正确的接入地址的
3). 新建的实例不行,新建实例是咱们改版后的部署模型,支持不同实例之间可以有同名的topic,这个时候必须指定对接入点地址
22.至于osPageCacheBusyTimeOutMills,目前只有铂金版的才支持调整的。标准版本建议catch重试发送。
23.使用管控API查询消息或者死信消息是被BASE64加密的,代码获取需要解密。
final BASE64Decoder decoder = new BASE64Decoder();
System.out.println(new String(decoder.decodeBuffer(response.getData().getBody()), "UTF-8"));

24.监控告警的配置只能在配置的账号中查看到,需要登陆到子账号中

25.http也有重试策略:重试间隔固定5分钟,重试1天。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
7月前
|
消息中间件 存储 负载均衡
消息队列 MQ产品使用合集之如何排查是哪个队列导致的异常TPS增加
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
106 0
|
消息中间件 弹性计算 运维
消息队列RocketMQ版:消费异常运维排查体验
本实验场景介绍消息队列RocketMQ版的可观测工具功能,通过示例程序模拟生产环境消费业务故障,并通过产品提供的开箱即用的可观测工具定位消费异常。
消息队列RocketMQ版:消费异常运维排查体验
|
消息中间件 RocketMQ
RocketMQ消费者没有成功消费消息的问题排查
RocketMQ消费者没有成功消费消息的问题排查
1695 1
|
消息中间件 Java RocketMQ
《Rocket MQ 使用排查指南8-13》电子版地址
发送消息耗时太久?客户端发送常见异常报错?启动发送端连接异常?Java 进程消息堆积严重...这些问题都有答案啦!详细的排查步骤和问题回答帮你快速搞定Rocket MQ使用过程中的各类问题。还有细致的问题原因分析和最佳的问题解决方案。100+常见问题,《Rocket MQ 使用排查指南》一本搞定!还等什么?即刻下载阅读吧!
73 0
《Rocket MQ 使用排查指南8-13》电子版地址
|
消息中间件 RocketMQ
RocketMq重复消费问题排查
RocketMq重复消费问题排查
631 0
|
消息中间件 Java RocketMQ
《Rocket MQ 使用排查指南8-13》电子版
发送消息耗时太久?客户端发送常见异常报错?启动发送端连接异常?Java 进程消息堆积严重...这些问题都有答案啦!详细的排查步骤和问题回答帮你快速搞定Rocket MQ使用过程中的各类问题。还有细致的问题原因分析和最佳的问题解决方案。100+常见问题,《Rocket MQ 使用排查指南》一本搞定!还等什么?即刻下载阅读吧!
126 0
《Rocket MQ 使用排查指南8-13》电子版
|
消息中间件 Java RocketMQ
《Rocket MQ 使用排查指南8-13》电子版下载
发送消息耗时太久?客户端发送常见异常报错?启动发送端连接异常?Java 进程消息堆积严重...这些问题都有答案啦!详细的排查步骤和问题回答帮你快速搞定Rocket MQ使用过程中的各类问题。还有细致的问题原因分析和最佳的问题解决方案。100+常见问题,《Rocket MQ 使用排查指南》一本搞定!还等什么?即刻下载阅读吧!
90 0
《Rocket MQ 使用排查指南8-13》电子版下载
|
消息中间件 Java RocketMQ
《Rocket MQ 使用排查指南8-13》电子版下载地址
发送消息耗时太久?客户端发送常见异常报错?启动发送端连接异常?Java 进程消息堆积严重...这些问题都有答案啦!详细的排查步骤和问题回答帮你快速搞定Rocket MQ使用过程中的各类问题。还有细致的问题原因分析和最佳的问题解决方案。100+常见问题,《Rocket MQ 使用排查指南》一本搞定!还等什么?即刻下载阅读吧!
79 0
《Rocket MQ 使用排查指南8-13》电子版下载地址
EMQ
|
消息中间件 存储 网络性能优化
MQTT 客户端出现连接订阅等问题时如何排查?
这是一期EMQX社区专题FAQ,我们整理了近期社区中关注度较高的问题,在这里进行统一汇总解答。
EMQ
444 0
|
消息中间件 Java RocketMQ
Rocket MQ 使用排查指南
Rocket MQ 使用排查指南
199 0