zoukankan      html  css  js  c++  java
  • rabbitmq:

    rabbitmq:
    准备:
    · 安装rabbitmq; brew install rabbitmq    
    · php需要引入php-amqplib composer require php-amqplib/php-amqplib
    
    注意:
    · 手动ack
    customer 端 basic_consume no_act 设置为false,
    在callback里面    $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']); 手动ack
    不手动ack则默认mq直接删除消息,容易造成消息丢失。
    但要注意如果忘记ack,则会造成消息重发,或者mq 占大内容
    · 消息持久化(简单,不是百分百保证不丢失)
    productor,customer queue_declare 是durable 设置为true 【队列持久化】
    new mesaage 时 增加参数 delivery_mode => AMQPMessage::DELIVERY_MODE_PERSISTENT 【信息持久化】
    · 非循环投递
    默认多customer,循环投递(比如 2个customer,则一个odd,一个even)
    customer 端 basic_consume 之前调用 $channel->basic_qos( null, 1, null );可设置mq给每个customer 1个任务,当其ack之后,在投递新的任务。不会让customer累的累死,闲的闲死
    · 以上参考url 【http://www.rabbitmq.com/tutorials/tutorial-two-php.html】
    
    · publis/submit [fanout => broadcast]
    订阅模式需要productor ,customer 声明相同的 exchange,exchange 的类型为 fanout;
    productor baisc_publish 执行exchangename 信息;
    customer 需要list( $queue, ,) = $channel->queue_declare("", false, false, true, false );生成唯一随机的队列名称,并且 $channel->queue_bind( $queue, 'log' );绑定到exchange上面。
    如果没有customer ,那么productor的消息会被丢弃。
    · 参考url 【http://www.rabbitmq.com/tutorials/tutorial-three-php.html】
    
    · routing [diret]
    相比于订阅模式,routing模式相当于对数据做了下筛选。
    productor,consumer 声明相同的exchange,exchange type 为 direct
    productor basic_publish 时,routing_key 需要指定
    consumer 需要list( $queue, ,) = $channel->queue_declare("", false, false, true, false );生成唯一随机的队列名称,并且 $channel->queue_bind( $queue, 'log', routing_key );绑定到exchange上面。同时routing_key 为必填。$channel->queue_bind可以执行多次,绑定多个routing_key
    未被consumer匹配到的routing_key的消息,会被丢弃
    多个consumer的routing_key 可以重复。
    · 参考url【http://www.rabbitmq.com/tutorials/tutorial-four-php.html】
    
    · topics [topic]
    routing模式筛选不够灵活,使用topic则可以灵活的进行匹配
    # 代表所有的routing_key; *.xxx *可以匹配任何字符,但后面.xxx则必须相符 ;xxx 则类似于diret
    只用使用.(dot)来进行分割routing_key
    · 参考url 【http://www.rabbitmq.com/tutorials/tutorial-five-php.html】
    
    
  • 相关阅读:
    【常用配置】Spring框架web.xml通用配置
    3.从AbstractQueuedSynchronizer(AQS)说起(2)——共享模式的锁获取与释放
    2.从AbstractQueuedSynchronizer(AQS)说起(1)——独占模式的锁获取与释放
    1.有关线程、并发的基本概念
    0.Java并发包系列开篇
    SpringMVC——DispatcherServlet的IoC容器(Web应用的IoC容器的子容器)创建过程
    关于String的问题
    Spring——Web应用中的IoC容器创建(WebApplicationContext根应用上下文的创建过程)
    <<、>>、>>>移位操作
    System.arraycopy(src, srcPos, dest, destPos, length) 与 Arrays.copyOf(original, newLength)区别
  • 原文地址:https://www.cnblogs.com/lxdd/p/10002418.html
Copyright © 2011-2022 走看看