Skip to main content

Producer

1. 消息发送的基本流程

  • 消息的验证

    主题名称 、 消息体不能为空 、 消息长度不能等于 0且默认不能超过允许发送消息的最大长度 4M 。

  • 查找路由

    发送前获取路由信息,如果生产者本地缓存了路由信息直接获取返回。如果没有本地缓存则想NameServer查询topic的路由信息。如果最终没能找到路由信息则抛出异常。

    • 首先根据设置判断是否用默认主题去查询,如果默认主题查询到路由信息则替换路由信息中读写队列个数为消息生产者默认的队列个数( defaultTopicQueueNums);如果isDefault为 false,则使用参数 topic去查询;如果未查询到路由信息,则返回 false,表示路由信息未变化 。
    • 如果路由信息找到,与本地缓存中的路由信息进行对比,判断路由信息是否发生 了改变, 如果未发生变化,则直接返回 false。
    • 将信息转换为本地
  • 消息发送

2. 总结