RocketMQ问题排查思路-阿里云开发者社区

开发者社区> 阴转多云转晴> 正文

RocketMQ问题排查思路

简介: 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天。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Bootstrap中datetimepicker日期控件1899年问题解决
 Bootstrap中datetimepicker日期控件1899年问题解决   最近在开发项目的过程中,遇到一个很尴尬的问题。我们项目一直采用的是angular+bootstrap,日期控件用的是bootstrap中的datetimepicker,这个日期控件存在一个bug,当用户输入日期时,日期控件会自动跳到1899年,这个用户体验特别不好,一不小心就可能点错了。
1974 0
Mac下遇到 &#39;reading initial communication packet’ 问题
今天在开发过程中,一个单位跑的好好的项目,在家中的Mac下运行时,遇到了下面这个错误:   "Lost connection to MySQL server at 'reading initial communication packet, system error: 61"   看错误描述应该是无法连接数据库,OK,我先检查数据库是否正常工作,phpmyadmin看了一下一切正常。
1127 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10761 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
11784 0
+关注
阴转多云转晴
小白一枚
11
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载