“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第n篇文章,点击查看活动详情”
序
接上节 上节讲的是 namesrv 的NamesrvController 初始化,这节 写 KVConfigManager RouteInfoManager
带着问题 往下看 (namesrv)
- 如果消息 接收有异常,在哪看?
- 如果消息消费 有异常,我希望 接入我们公司的消息通知系统,怎么做?
- 发送消息的时候 '消费者不在线' code 码是多少
- 明明设置了 autoCreateTopicEnable = true 但是 业务端发送消息 发现topic 没有创建
- 如果感觉 参数/请求头 key过大,希望 压缩 怎么办
- 默认的topicConfigTable 有什么?
- 我现在临时想看下 topic 在broker上有哪些,暂时没有console 怎么看
请先自己 想想,把答案写出来,然后往下看
nameserver 问题解答
如果消息 接收有异常,在哪看?
主要看 MessageTrack 类
public class MessageTrack {//如果 消息接收有异常 怎么确定问题
private String consumerGroup;//消费者组
private TrackType trackType;//链路类型
private String exceptionDesc;//错误信息
}
如果消息消费 有异常,我希望 接入我们公司的消息通知系统,怎么做?
发送消息的时候 '消费者不在线' code 码是多少
public static final int CONSUMER_NOT_ONLINE = 206;//消费者不在线
明明设置了 autoCreateTopicEnable = true 但是 业务端发送消息 发现topic 没有创建
Producer发送一个不存在的Topic消息时,首先会从NameServer拉取Topic路由数据,第一次拉取必然失败,第二次会直接拉取TBW102的路由数据,基于它创建TopicPublishInfo并缓存到本地,进行正常的消息发送,在Header里将defaultTopic设置为TBW102。Broker接收到消息时,先对消息做Check,检查到Topic不存在,会基于defaultTopic的配置去创建该Topic,然后注册到NameServer上,这样一个全新的Topic就被自动创建了。
可能是 nameServer 拉取 失败 或者 broker 创建Topic 失败,需要一个一个 确定问题。 一般都是 broker的事 ,但是那次broker 一切正常,logs 也无报错,但是发现没有消息。只能往前找,发现是 nameServer 拉取TBW102 有问题
如果感觉 参数/请求头 key过大,希望 压缩 怎么办
把key 变为 a b c d 减少传输的key
SendMessageRequestHeaderV2 requestHeaderV2 = SendMessageRequestHeaderV2.createSendMessageRequestHeaderV2(requestHeader);
默认的topicConfigTable 有什么?
我现在临时想看下 topic 在broker上有哪些,暂时没有console 怎么看
两部分 其中第一部分是 本地,代码在TopicConfigManager 类 createTopicInSendMessageMethod 方法 D:/gitWorkspace/rocketmq/data\config\topics.json 把topic的信息 都变为了 json 进行存储
json 实际就是 broker中 topicConfigTable 这个map的信息
另外一部分是 远程topic 信息同步,最底层调用的方法为 BrokerOuterAPI 类 registerBrokerAll方法
再根据 rocketmq-console-ng 2.0.0 中 访问topic列表的 接口 http://localhost:8080/topic/list.query 查看其源码 进行 验证 底层调用的是 MQClientAPIImpl 类的 getTopicListFromNameServer 方法 调用的 是 rocket-client 的 206 code 获取 topicList, 是从 nameserver 处 获取 下面map的 keySet
HashMap<String/* topic */, List<QueueData>> topicQueueTable;
总结
这些 只是 namestr 的NamesrvController 初始化,之后 慢慢的一点点往下写,如果感觉写的还有优化的,评论下 哈
wx yuyezhiji 雨夜