/aliyun-mns

阿里云 MNS SDK for Python

Primary LanguagePythonMIT LicenseMIT

阿里云消息服务 Message Service Python SDK说明文档
===============================================================
阿里云消息服务官方网站:
    http://www.aliyun.com/product/mns/

阿里云消息服务
===============================================================

一、简介
===============================================================
这篇文档主要介绍如何使用Python来进行Message Service API调用,并
且介绍mnscmd的简单使用方法。
这篇文档假设您已经熟悉Python,熟悉Message Service的相关概念,并
且已经注册阿里云账号、开通阿里云的消息服务,且获得了相应的
AccessKeyId、AccessKeySecret和AccountId。如果您还没有开通或者还
不了解Message Service,请移步阿里云消息服务官方网站。

二、环境要求
===============================================================
Python SDK需要:安装python 2.5 - 2.7、 python 3.2 - 3.6 以上的版本。
可以在Windows平台和Linux平台使用。

三、使用说明
===============================================================
安装sdk和mnscmd
===============================================================
1. linux平台
   sudo python setup.py install

2. Windows平台
   python.exe setup.py install

===============================================================
注意事项
===============================================================
1. Account, Queue, Topic, Subscription均不是线程安全的,多线程
 场景下请独立构造对象;

===============================================================
运行sample.py
===============================================================
1. 访问阿里云官网获取的AccessKeyId、AccessKeySecret、AccountId;
2. 访问阿里云消息服务官网,进入控制台获取Endpoint;
3. 将AccessKeyId、AccessKeySecret、Endpoint填写到sample.cfg中;
4. linux平台运行"python sample.py",Windows平台运行"python.exe sample.py"。

===============================================================
运行simple_notify_endpoint.py
===============================================================
1. 下载并安装M2Crypto, 地址:https://pypi.python.org/pypi/M2Crypto;
2. linux平台运行"python simple_notify_endpoint.py [port]",Windows平台运行"python.exe simple_notify_endpoint.py [port]", 端口号默认为8000;
3. 启动simple_notify_endpoint.py后会输出监听的地址:http://$localIp:$port, 将该地址作为Subscription的Endpoint属性即可接收推送到该Subscription的消息。

===============================================================
使用mnscmd
注意:在Windows平台cmd中mnscmd不能直接运行,需要进入bin目录,用"python.exe mnscmd"替换使用帮助中的"mnscmd";
===============================================================
## 配置
配置访问MNS所需要的认证码
   命令:mnscmd config --mnsendpoint=http://$accountid.mns.cn-hangzhou.aliyuncs.com --accesskeyid=YOUR_ACCESSKEYID --accesskeysecret=YOUR_ACCESSKEYSECRET

## Account相关命令
1. 获取Account的属性
   命令:mnscmd getaccountattr

## Queue相关命令
1. 列出创建的queue
   命令:mnscmd listqueue
   如果是刚刚使用MNS的用户因为没有创建queue,输出是空

2. 创建queue
   命令:mnscmd createqueue --queuename=myqueue
   帮助:mnscmd createqueue --info
   "myqueue"可以根据需求修改为符合规则的queue name
   queue name的详细规则请移步阿里云消息服务官方网站
   更多属性指定,运行帮助命令

3. 获取queue
   命令:mnscmd getqueueattr --queuename=myqueue
   命令返回queue的各项属性

4. 设置queue属性
   命令:mnscmd setqueueattr --queuename=myqueue --delaysec=5
   帮助:mnscmd setqueueattr --info
   设置queue的delayseconds为5秒
   更多属性设置,运行帮助命令

5. 发送message
   命令:mnscmd sendmessage --queuename=myqueue --body="I am a test message."
   帮助:mnscmd sendmessage --info
   发送一条消息到队列myqueue中
   更多属性指定,运行帮助命令

6. 查看message
   命令:mnscmd peekmessage --queuename=myqueue
   查看myqueue中的第一条消息

7. 消费message
   命令:mnscmd receivemessage --queuename=myqueue
   消费myqueue中的第一条消息
   命令返回消息基本信息和临时句柄(ReceiptHandle)

8. 修改message下次可消费时间
   命令:mnscmd changevisibility --queuename=myqueue --handle=YOUR_RECEIPTHANDLE --vistimeout=10
   YOUR_RECEIPTHANDLE是receivemessage返回的ReceiptHandle
   消息10秒后可再次被消费,命令返回新的ReceiptHandle

9. 删除message
   命令:mnscmd deletemessage --queuename=myqueue --handle=YOUR_RECEIPTHANDLE
   YOUR_RECEIPTHANDLE是最近一次操作返回的ReceiptHandle,即第9步返回的ReceiptHandle

10. 删除queue
   命令:mnscmd deletequeue --queuename=myqueue
   注意,如果queue中有message,所有message都会被删除

## Topic相关命令
1. 列出创建的topic
   命令:mnscmd listtopic
   帮助:mnscmd listtopic --info
   命令返回topic的URL列表,--prefix指定topic名称的前缀,--retnum指定返回的topic个数,--marker指定topic的起始位置

2. 创建topic
   命令:mnscmd createtopic --topicname=mytopic
   帮助:mnscmd createtopic --info
   创建名称为"my topic"的主题,"my topic"可以根据需要修改为符合规则的topic name
   topic name的详细规则请移步阿里云消息服务官方网站

3. 获取topic属性
   命令:mnscmd gettopicattr --topicname=mytopic
   帮助:mnscmd gettopicattr --info
   命令获取topic的各项属性

4. 设置topic属性
   命令:mnscmd settopicattr --topicname=mytopic --maxmsgsize=1024
   帮助:mnscmd settopicattr --info
   设置topic的最大消息长度1024 Byte

5. 发布消息
   命令:mnscmd publishmessage --topicname=mytopic --body="I am a test message."
   帮助:mnscmd publishmessage --info
   发送一条消息到主题mytopic中

6. 列出topic的subscription
   命令:mnscmd listsub --topicname=mytopic
   帮助:mnscmd listsub --info
   命令返回订阅mytopic的subscription URL列表,--prefix指定subscription名称的前缀,--retnum指定返回的subscription个数,--marker指定起始位置

7. 创建subscription
   命令:mnscmd subscribe --topicname=mytopic --subname=mysub --endpoint=http://test-endpoint
   帮助:mnscmd subscribe --info
   创建一个名叫mysub的subscription,订阅mytopic,指定endpoint为:http://test-endpoint

8. 获取subscription属性
   命令:mnscmd getsubattr --topicname=mytopic --subname=mysub
   帮助:mnscmd getsubattr --info
   获取mysub的各项属性

9. 设置subscription属性
   命令:mnscmd setsubattr --topicname=mytopic --subname=mysub --notifystrategy=BACKOFF_RETRY
   帮助:mnscmd setsubattr --info
   设置mysub的重传策略为BACKOFF_RETRY

10.删除subscription
   命令:mnscmd unsubscribe --topicname=mytopic --subname=mysub
   帮助:mnscmd unsubscribe --info
   删除mysub

11.删除topic
   命令:mnscmd deletetopic --topicname=mytopic
   帮助:mnscmd deletetopic --info
   删除mytopic,注意:该操作会删除mytopic的所有消息和订阅该topic的subscription
   帮助:mnscmd listsub --info

四、ChangeHistory
===============================================================
1.1.5 - 2017-06-16
* 支持 Python3.2+ ( 由 Gikoluo https://github.com/gikoluo/aliyun-mns 支持 )

1.1.4 - 2017-03-14
* 主题模型支持短信推送
* 队列/主题支持消息包含中文
* mnscmd 支持参数指定host、accesskey对
* mnscmd支持指定是否对队列消息做base64编码和解码

1.1.3 - 2016-09-13
* 支持透传RequestID到MNS端
* Topic推送支持QueueEndpoint和MailEndpoint
* 主题消息推送支持json格式
* mnscmd 支持 --config_file 指定配置文件

1.1.2 - 2016-04-25
* Topic推送支持消息过滤
* 增加sample目录,包含更详细的示例代码

1.1.1 - 2016-03-25
* 支持Https访问
* Queue和Topic支持LoggingEnabled属性设置和查询
* 支持设置和获取Account的属性

1.1.0 - 2016-01-05
* 支持Topic相关接口
* 提供simple_http_notify_endpoint.py和simple_https_notify_endpoint.py
* 支持STS访问

1.0.2 - 2015-06-01
* 支持SDK安装
* 提供mnscmd命令

1.0.1 - 2015-02-03
* 统一队列非字符串属性为int类型;
* 修正SetQueueAttr的http状态码为204。

1.0.0 - 2014-08-01
* SDK支持queue的创建、修改、获取、删除,message的发送、查看、消费、删除和修改下次可消费时间。