【阿里云】MNS消息队列常见问题及解决方法
来源:互联网 发布:js统计按钮点击次数 编辑:程序博客网 时间:2024/04/29 21:06
阿里云常见用法及错误:
1、往阿里云上推消息,和从阿里云上拉取消息都需要本地服务器时间与阿里云上实际时间一致,也就是不能改时间。改时间会报超时的错误。
错误码:TimeExpired 错误描述:The http request you sent is expired. http状态码:408
2、阿里云访问权限错误
错误码:AccessDenied 错误描述:The OwnerId that your Access Key Idassociated to is forbidden for this operation. http状态码:403
出现这类错误的原因是:没有权限,这accessKey所属的阿里云账号禁止进行此操作。
例如:同一个阿里云账号上有广州和深圳两个终点,分别为体验环境和开发环境的队列:
体验环境:(以-test结尾)
MNS_ACCESSKEYID 85743kfsdfjkgdfgh23
MNS_ACCESSKEYSECRET fgfdg4f34545645dkfsdgfg
MNS_ACCOUNTENDPOINT http://19642676786765.mns.cn-guangzhou.aliyuncs.com
AliYunMns.TXFK_DATA_QUEUE_NAME P2P-withdraw-back-record-test
开发环境:(以-dev结尾)
MNS_ACCESSKEYID 125631JHFKSDIfsdj
MNS_ACCESSKEYSECRET KFDJFKggjdgfgjKJDGDkglgflkgs
MNS_ACCOUNTENDPOINT http://19642465670496765.mns.cn-shenzhen.aliyuncs.com
AliYunMns.TXFK_DATA_QUEUE_NAME P2P-withdraw-back-record-dev
如果用体验环境的Id、secret和endpoint去访问开发环境的队列 P2P-withdraw-back-record-dev就会报上面的错误。如下所示:
MNS_ACCESSKEYID 85743kfsdfjkgdfgh23
MNS_ACCESSKEYSECRET fgfdg4f34545645dkfsdgfg
MNS_ACCOUNTENDPOINT http://19642676786765.mns.cn-guangzhou.aliyuncs.comqueues/P2P-withdraw-back-record-dev
因为体验环境限制了队列以-test结尾,所以就必须要以-test去访问。
3、如何实现消息延时发送?
使用阿里云提供的com.aliyun.mns.model.Message类,设置message.delaySeconds属性,该属性定义的是这消息延时多少毫秒,也就说在当前时间之前多少毫秒才能从MNS上拉取到这条消息,在这之前,该消息不可见,也不能被拉取到。
(1)如何往MNS上推送数据?
CloudQueue queue =getSmsPutClient().getCloudQueue(redisCacheBo.getCacheValue("SYSTEM.MNS_MESSAGEQUEUENAME")); Message message=new Message(); for(MessageDto mDto:list){ String sDto=JSONUtils.obj2json(mDto); message.setMessageBody(sDto); MessageRelation messageInfo=messageRelationMapper.selectByPrimaryKey(mDto.getTemplateId()); String durTime=messageInfo.getDurtime(); String[] time=durTime.split("-"); message.setDelaySeconds(dayBreak(time[0],time[1])); queue.putMessage(message); }
(2)如何从MNS上拉取数据?
CloudAccount account = new CloudAccount(MNSAccessKeyId,MNSAccessKeySecret,MNSAccountEndpoint); MNSClient client = account.getMNSClient(); CloudQueue queue = client.getQueueRef(QUEUE_NAME1); int batchMsgSize = 15; List<Message> batchPopMessage = queue.batchPopMessage(batchMsgSize);
- 【阿里云】MNS消息队列常见问题及解决方法
- 阿里云mns 消息之短信搭建
- 使用阿里云消息服务mns发送短信
- php集成阿里MNS消息服务
- 阿里云---新的短信服务(整合到消息服务MNS后)
- 消息服务MNS和消息队列ONS产品对比
- 阿里云VPN网关常见问题与解决方法
- 学习笔记:阿里云ECS部署web项目的常见问题及解决方法
- 阿里云消息队列的实践应用
- 消息队列常见问题
- 消息及消息队列
- 阿里MNS服务:代码显示成功并可以得到消息id及其md5,手机却收不到短信
- 阿里MNS和RabitMQ双支持方案
- [整理]阿里云之消息队列的使用
- SAP常见问题及解决方法
- Ext常见问题及解决方法
- Silverlight常见问题及解决方法
- Datastage常见问题及解决方法
- 记录两个用pika和kombu实现的rabbitmq队列操作
- mysql数据类型
- Java内存机制
- redis学习笔记2--单机数据库的实现
- jsondingding
- 【阿里云】MNS消息队列常见问题及解决方法
- 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
- 【CF 125D】 Two progressions 划分等差数列
- RESTFUL和http理解
- Android实现一个活动中弹出对话框(如js的alert)
- springhadoop mapreduce wordcount
- STM32新建工程
- C#调用java web Service出现的问题
- Android AIDL跨进程通信