mq18

生产者Producer在发送消息的时候需要指定Topic,例如Message message = new Message(“test-topic”, buildString().getBytes(RemotingHelper.DEFAULT_CHARSET)); 通常Topic需要先提前创建好,在创建Topic的时候,需要指定MessageQueue的数量,假如咱们创建的RocketMQ集群有两个Master Broker,我们创建Topic的时候指定了4个MessageQueue,那么可以简单认为,每个MasterBroker分布了2个MessageQueue,从而起到了数据分片的作用。

Producer在发送消息之前需要从NameServer中拉取topic元数据(第一次发送消息的时候拉取的),获取该topic的MessageQueue数量,发送的时候选择其中一个MessageQueue进行发送,起到了负载均衡的作用。

如果Producer发送消息的时候其中一个Master Broker宕机,建议在Producer开启sendLatencyFaultEnable开关,例如producer.setSendLatencyFaultEnable(true);在3000毫秒内,Producer不再访问宕机的Master Broker,起到容错的作用。

打赏
支付宝 微信
上一篇 下一篇