RabbitMQ一些概念

消息确认

  1. 消息确认机制默认是关闭的,开启只需在消费者消耗消息方法basic_consume中将第四个参数设置为false,并在消息处理完毕后返回给生产者一个确认标识即可。
  2. 列出队列中未处理和未确认的消息rabbitmqctl list_queues name messages_ready messages_unacknowledged

消息持久化

  1. 将(生产者和消费者)声明队列方法queue_declare中将第三个参数设置为true
  2. 生产者实例化消息时第二个可选参数设置为delivery_mode = 2
    1
    2
    3
    $msg = new AMQPMessage(
    $data, array('delivery_mode' => 2)
    );

合理分发消息

  1. 消耗端设置$channel->basic_qos(null, 1, null),每个消耗端只处理一个消息

生产者

消费者

消息队列

交换机

  1. 分类
    • fanout:所有队列都可消费消息
    • direct:根据不同需求绑定不同的key到不同消息队列,生产者生产消息时通过传入不同的key区分消息类型
      • 当所有消息队列绑定的key相同时,和fanout等价
    • topic
      • * (star) 星号代替一个单词
      • # (hash) #号代替零个或多个单词
      • 不用* #时和direct等价
      • 只用#时和fanout等价
      • 将交换机声明为topic,生产者生产消息时传入不同的key,消费者通过星号和#号匹配对应的消息队列以消费
    • headers