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

简介

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

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

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

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

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

使用方式

创建消息、消息入队列

use Filix\SMS\Queue\RedisQueue;
use Filix\SMS\Message\Message;
use Filix\SMS\Producer\PrimaryProducer;
use Filix\SMS\SmsService\BWService; $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 Filix\SMS\Queue\RedisQueue;
use Filix\SMS\Customer\PrimaryCustomer;
use Filix\SMS\SmsService\BWService; $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

实现Filix\Queue\QueueInterface接口即可,如实现自己的Mysql队列、RabbitMQ队列等。

自定义第三方短信服务商

实现Filix\SmsService\ServiceInterface接口即可。

sms_queue 短信队列的更多相关文章

  1. springboot中activeMQ消息队列的引入与使用(发送短信)

    1.引入pom依赖 <!--activemq--><dependency> <groupId>org.springframework.boot</groupI ...

  2. PhpSms 稳定可靠的php短信发送库

    可能是目前最聪明.优雅的PHP短信发送库了.从此不再为各种原因造成的个别短信发送失败而烦忧! phpsms的任务均衡调度功能由toplan/task-balancer提供. GitHub地址:http ...

  3. C#利用Web Service实现短信发送(转)

    通过编程方式实现短信息的发送对很多人来说是一件比较烦杂的事情,目前一般的解决方法是通过计算机和手机的连线,通过可对手机编程的语言编写相关的手机短信息程序来实现,而这种方法对于一般人来说是很难达到的,因 ...

  4. IOS中调用系统的电话、短信、邮件、浏览功能

    iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评 ...

  5. Android短信彩信收发流程(应用层)

    下图为ComposeMessageActivity中confirmSendMessageIfNeeded部分的信息发送流程.主要以接收者有效性的确认为主,然后转向sendMessage方法进行发送. ...

  6. android短信的接收和发送处理

    一 初始化 手机开机初始化调用GSMPhone 构造函数. GSMPhone (Context context, CommandsInterface ci, PhoneNotifier notifie ...

  7. php批量发送短信或邮件的方案

    最近遇到在开发中遇到一个场景,后台管理员批量审核用户时候,需要给用户发送审核通过信息,有人可能会想到用foreach循环发送,一般的短信接口都有调用频率,循环发送,肯定会导致部分信息发送失败,有人说用 ...

  8. 深度解析:Android在Mms设置页面更改短信中心号码流程

    相关控件初始化方法:showSmscPref private void showSmscPref() {         int count = MSimTelephonyManager.getDef ...

  9. app后端设计(3)--短信,邮件,推送服务(2014.12.05更新)

    在app的后端设计中,免不了消息的推送,短信,邮件等服务,下面就个人的开发经验谈谈这方面. (1)最重要的是,各种推送一定要放在队列系统中处理,不然会严重影响api的响应时间. (2)短信方面 以前我 ...

随机推荐

  1. hihocoder155周 任务分配

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定 N 项任务的起至时间( S1, E1 ), ( S2, E2 ), ..., ( SN, EN ), 计算最少需要多 ...

  2. web前端笔记整理,从入门到上天,周周更新

    由于大前端知识点太多,所以一一做了分类整理,详情可见本人博客 http://www.cnblogs.com/luxiaoyao/ 一.HTML 1.注释 格式:<!-- 注释内容 --> ...

  3. mac os颜色拾取工具/软件/器推荐

    软件名:ColorSnappe 目前我用的时1.1.0版本 该工具可以利用alt+command+c快捷键拾取颜色,拾取后可以自动把颜色代码放入剪切板 .我最喜欢它可以生成ios开发的代码,比如选择了 ...

  4. 使用本地的Nuget Repository加速Nuget访问速度

    Nuget是一个在VisualStudio下的非常好用的包管理器,然而由于众所周知的原因,其访问速度非常令人抓狂,甚至抽风.在没有VPN的环境下,如何解决这一问题呢?常见的解决方案是自己搭建一个Nug ...

  5. Spring集合 (List,Set,Map,Properties) 实例

    下面例子向您展示Spring如何注入值到集合类型(List, Set, Map, and Properties). 支持4个主要的集合类型: List – <list/> Set – &l ...

  6. jsp:include 动作指令 与 include 指令

    include动作指令可以在JSP页面中动态包含一个文件,这与include指令不同,前者可以动态包含一个文件,文件的内容可以是静态的文件也可以是动态的脚本,而且当包含的动态文件被修改的时候JSP引擎 ...

  7. python 将有序list打乱

    利用random模块下的shuffle函数就能够实现. 关于官网对于shuffle,我感觉说法上有一定的误解. 上面是官网的解释,他说会返回打乱的list,事实上什么也没有返回. 能够看到返回的是No ...

  8. linux ifconfig

    Linux and Unix ifconfig command Quick links About ifconfig Syntax Examples Related commands Linux an ...

  9. Java:使用 Java 开发的一个异常处理框架

    背景 这篇文章介绍的异常处理思路不错,本文试图给出一种具体实现,当然可能和作者的思路有所不同. 框架地址:https://github.com/happyframework/HappyFramewor ...

  10. JPA入门样例(採用JPA的hibernate实现版本号)

    (1).JPA介绍: JPA全称为Java Persistence API ,Java持久化API是Sun公司在Java EE 5规范中提出的Java持久化接口.JPA吸取了眼下Java持久化技术的长 ...