sms_queue 短信队列
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 短信队列的更多相关文章
- springboot中activeMQ消息队列的引入与使用(发送短信)
1.引入pom依赖 <!--activemq--><dependency> <groupId>org.springframework.boot</groupI ...
- PhpSms 稳定可靠的php短信发送库
可能是目前最聪明.优雅的PHP短信发送库了.从此不再为各种原因造成的个别短信发送失败而烦忧! phpsms的任务均衡调度功能由toplan/task-balancer提供. GitHub地址:http ...
- C#利用Web Service实现短信发送(转)
通过编程方式实现短信息的发送对很多人来说是一件比较烦杂的事情,目前一般的解决方法是通过计算机和手机的连线,通过可对手机编程的语言编写相关的手机短信息程序来实现,而这种方法对于一般人来说是很难达到的,因 ...
- IOS中调用系统的电话、短信、邮件、浏览功能
iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评 ...
- Android短信彩信收发流程(应用层)
下图为ComposeMessageActivity中confirmSendMessageIfNeeded部分的信息发送流程.主要以接收者有效性的确认为主,然后转向sendMessage方法进行发送. ...
- android短信的接收和发送处理
一 初始化 手机开机初始化调用GSMPhone 构造函数. GSMPhone (Context context, CommandsInterface ci, PhoneNotifier notifie ...
- php批量发送短信或邮件的方案
最近遇到在开发中遇到一个场景,后台管理员批量审核用户时候,需要给用户发送审核通过信息,有人可能会想到用foreach循环发送,一般的短信接口都有调用频率,循环发送,肯定会导致部分信息发送失败,有人说用 ...
- 深度解析:Android在Mms设置页面更改短信中心号码流程
相关控件初始化方法:showSmscPref private void showSmscPref() { int count = MSimTelephonyManager.getDef ...
- app后端设计(3)--短信,邮件,推送服务(2014.12.05更新)
在app的后端设计中,免不了消息的推送,短信,邮件等服务,下面就个人的开发经验谈谈这方面. (1)最重要的是,各种推送一定要放在队列系统中处理,不然会严重影响api的响应时间. (2)短信方面 以前我 ...
随机推荐
- Android 基于蓝牙的方向控制器
最近开发了一个蓝牙控制器App,用手机远程控制小球的运动. 包含了一些基础知识:多线程使用,页面UI数据更新,按钮事件,选择项功能,蓝牙功能(蓝牙打开,蓝牙搜索,蓝牙连接,蓝牙命令发送,蓝牙命令接收) ...
- linux基础命令学习 (十)Vi
1.vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: ...
- 原来通过修改dns加快app store下载速度的确有效
说来惭愧,这几天休假,并没有做什么技术上的修行.小伙伴推荐我一款avg游戏<11eyes 罪与罚与被诅咒的少女>,说是神作.但是app store上卖rmb118元,起初并没有什么兴趣去购 ...
- django 获取 POST 请求值的几种方法(转)
转载请注明出处:http://hi.baidu.com/leejun_2005/blog/item/9a37a22238f35c5bac34de54.html from:http://stackove ...
- linux开发node相关的工具
epel-release yum install epel-release node yum install nodejs mongodb 安装mongodb服务器端 yum install mong ...
- js继承——到继承结束
说到继承,其它语言里可能有两种: 接口继承是继承方法签名,而实现继承则继承实际方法.ES函数没有签名,不能实现接口继承,只支持实现继承,而实现继承主要依靠原型链.(这两句话,说来轻松,理解来不易,且行 ...
- 完整的ASP.NET存储过程分页,排序,鼠标移至变色
首先建立一个存储过程如下(MySQL数据库):CREATE DEFINER=`root`@`localhost` PROCEDURE `pagination`( in tbName var ...
- JavaScript中的单引号和双引号解决
在使用JavaScript显示消息或者传递字符数据的时候,经常会碰到数据中夹杂单引号(')或者双引号("),这种语句往往会造成JavaScript报错.对此一般采用/'或者/"的解 ...
- linux sendmail 邮件服务器架设
大家都知道架邮件服务器首先要架DNS服务.架设sendmail邮件服务器,以供大家一起学习探讨. 步骤一, 安装SNEDMAIL服务,查看你是否有安装SENDMAIL. #rpm -qa|grep b ...
- Pairwise
FCC题目:找到你的另一半 有一个能力数组[7,9,11,13,15],按照最佳组合值为20来计算,只有7+13和9+11两种组合.而7在数组的索引为0,13在数组的索引为3,9在数组的索引为1,11 ...