各MQ 并发性能比较 
  
 
  |  
       
        吞吐量 
         | |
|  
       
        kafka 
         |  
       
        17.3w/s 
         | 
|  
       
        rocketMQ 
         |  
       
        11.6w/s 
         | 
|  
       
        RabbitMQ 
         |  
       
        5.96w/s 
         | 
    RocketMQ组件 
  
 
  
    broker  核心业务组件 
  
 
  
    nameServe 保存broker 的ip、端口、上下线信息等。 类似注册中心 
  
 
   
 
   启动nameServe 时会调用 runserver 
 
 
 
   启动broker  ,会默认读取/conf/broker.conf            mqbroker.cmd -c ../conf/broker.conf  
 
 
  
  
 
   多节点集群 
 
 
 
   2m-2s-async  主从间异步同步 
 
 
 
   2m-2s-sync    主从间异步同步 
 
 
 
   2m-noslave    没有主从 
 
 
 |  
       
      参数 
        |  
       
      参数含义 
        | 
|  
      
       brokerClusterName   
        |  
      
       集群的名字,同一网段内的相同集群名组成一个集群 
        | 
|  
      
       brokerName 
        |  
      
       节点名,一对主从节点名相同 
        | 
|  
      
       brokerRole 
        |  
      
       节点角色,ASYNC_MASTER异步主节点  AYNC_MASTER同步主节点  SLAVE 从节点 
        | 
 
  
  生产者发送消息的三种方式 
 
 
 
       同步发送 
 
 
 
       异步发送 
 
 
 
       单向发送 
 
 
  
  
 
 顺序消息 
 
 
      保证局部有序,不用关全局有序。局部有序,比如只用管单通会话有序,不用管所有用户的消息都是有序的 
 
 
  即,每个消息队列(MessageQueue)中是有序的,消息队列之间不保证有序 
 
 
  普通是在消费中注册  MessageListenerOderly 
 
  顺序消费注册的是      MessageListenerCurrently 
 
 
 
 
 延迟消息 
 
 
  Message对象 有18种预设的延迟级别,可以改配置 
 
      //1s、5s、10s、30s、1m、2m、3m、4m、5m、6m、7m、8m、9m、10m、20m、30m、1h、2h 
 
      msg.setDelayTimeLevel( 3);   //延迟 10秒 
 
 
  在开源版中自定义延迟消息,是改造的重点。 
 
 
 
 批量消息 
 
      将多条消息整合到一条消息一次性发送,减少网络请求次数和IO 
 
 
 
 过滤消息 
 
-  
  tag标签,一条消息只有一个tag,一个消费者
 -  
  sql 语法过滤, 支持 <>= "<>" in 、not in 等
 
            
 实现机制 将 
 consumer 
 指定的sql过滤规则推送到broker,由broker计算将最终结果推给 consumer 
 
 
 
 
 事务消息---只与生产者有关 
 
 
  TransactionMQProducer 本地有两个事务 execute 和 check 。broker会对unknown状态消息,过段时间调用一次本地check方法,默认最大调用次数是15。 
 
 
 
 
 
 
 实际运用举例(待后续与定时任务的实现方式效率比较) 
 
      配置好rocketMQ在下单后5分钟内不断让订单系统检查订单是否支付,支付后再将订单推到下游系统。 
 
 
 
 ACL权限控制 
 
      对各用户对topic 的访问限制 
 
 
 
 
                


















