zoukankan      html  css  js  c++  java
  • rocketMQ源码之 似乎并不能严格进行顺序消费

    broker定时向namesrv 注册,会告诉namesrv自己的brokername、brokeraddress、topic+队列数量信息等,namesrv会把topic的信息放到topicQueueTable(只有版本号改变才修改,

    broker只有topic信息发生改变了才改变版本号)中,同一个topic下,不同brokerName下的QueueData(队列信息)放在一个list里面,当producer这边用getTopicRouteInfoFromNameServer方法获取topicRoute

    信息然后用topicRouteData2TopicPublishInfo方法,放到publishInfo中的时候,也确实按照brokerName排序了,所以其messageQueueList是有序的,如果按照官方例子里面订单id取余,

    是可以将多条消息有序的发送到同一个队列,consumer用默认的集群模式分好队列,启用MessageListenerOrderly或者每次只取一条,消费完再取,是可以做到顺序消费的。

    但是如果在极端情况下比如当前topic下某个broker的队列由4个变为了8个,或者某个broker取消了注册,就有可能导致不能发送到特定的队列上,从而引起顺序消费失败。

    ps,brokerName是broker(集群)的标识,集群之间不要重复,应该人为设定

  • 相关阅读:
    CodeForces 734F Anton and School
    CodeForces 733F Drivers Dissatisfaction
    CodeForces 733C Epidemic in Monstropolis
    ZOJ 3498 Javabeans
    ZOJ 3497 Mistwald
    ZOJ 3495 Lego Bricks
    CodeForces 732F Tourist Reform
    CodeForces 732E Sockets
    CodeForces 731E Funny Game
    CodeForces 731D 80-th Level Archeology
  • 原文地址:https://www.cnblogs.com/chuliang/p/15390959.html
Copyright © 2011-2022 走看看