zoukankan      html  css  js  c++  java
  • sms_queue 短信队列

    git地址:https://github.com/Filix/sms_queue

    简介

    通过队列的方式发送短信,暂时实现了redis作为队列。

    以实现的第三方短信服务: 百悟漫道

    发送短信方,只需要将短信丢进队列。队列分主、副两个队列。
    优先选择丢进住队列,在丢进住队列前,判断若主队列消息堆积,则丢进副队列。

    两个队列对应两个消费者:主消费者和副消费者。

    主消费者从主队列获取消息,尝试发送,若失败则丢进副队列,有副队列负责发送。

    使用方式

    创建消息、消息入队列

    use FilixSMSQueueRedisQueue;    
    use FilixSMSMessageMessage;    
    use FilixSMSProducerPrimaryProducer;    
    use FilixSMSSmsServiceBWService;    
    
    $redis = new Redis();    
    $redis->connect('127.0.0.1', 6379);    
    //主队列
    $primaryQueue = new RedisQueue($redis, 'PRIMARY_CHANNEL');   
    //副队列
    $secondaryQueue = new RedisQueue($redis, 'SECONDARY_CHANNEL');     
    
    //创建sms
    $message = new Message();
    $message->setMobiles(array('13512345678', '13412345678'));
    $message->setContent('Hello!');
    
    //将百悟作为主服务
    $service = new BWService($corp_id, $corp_pwd, $corp_service); 
    //主生产者
    $producer = new PrimaryProducer($service, $primaryQueue, $secondaryQueue);
    //其实只是丢进主队列或副队列(主队列堆积时),并没有真正的发送
    $producer->send($message);

    发送消息

    创建主消费者脚本:

    use FilixSMSQueueRedisQueue;
    use FilixSMSCustomerPrimaryCustomer;
    use FilixSMSSmsServiceBWService;
    
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    $primaryQueue = new RedisQueue($redis, 'PRIMARY_CHANNEL');
    $secondaryQueue = new RedisQueue($redis, 'SECONDARY_CHANNEL');
    $service = new BWService($corp_id, $corp_pwd, $corp_service); 
    $customer = new PrimaryCustomer($service, $primaryQueue, $secondaryQueue);
    
    while(1){
        $result = $customer->fetchAndSend(3); //一次获取3条消息,并发地向服务商接口发送
        sleep(1);
    }

    自定义

    自定义queue

    实现FilixQueueQueueInterface接口即可,如实现自己的Mysql队列、RabbitMQ队列等。

    自定义第三方短信服务商

    实现FilixSmsServiceServiceInterface接口即可。

  • 相关阅读:
    JavaScript常用函数和方法
    Django中csrf错误
    LVS+Keepalived负载均衡配置
    CSP-S2019 游记
    三角函数公式整理
    LGOJP3193 [HNOI2008]GT考试
    BZOJ3790. 神奇项链
    BZOJ4241: 历史研究
    LGOJP2051 [AHOI2009]中国象棋
    AT2000 Leftmost Ball
  • 原文地址:https://www.cnblogs.com/zl0372/p/queue.html
Copyright © 2011-2022 走看看