阿里云消息服务官方网站: http://www.aliyun.com/product/mns/
这篇文档主要介绍如何使用Python来进行Message Service API调用,并 且介绍mnscmd的简单使用方法。 这篇文档假设您已经熟悉Python,熟悉Message Service的相关概念,并 且已经注册阿里云账号、开通阿里云的消息服务,且获得了相应的 AccessKeyId、AccessKeySecret和AccountId。如果您还没有开通或者还 不了解Message Service,请移步阿里云消息服务官方网站。
Python SDK需要:安装python 2.5 (包括) 以上且在3.0 (不包括) 以下 的版本。 可以在Windows平台和Linux平台使用。
-
linux平台 sudo python setup.py install
-
Windows平台 python.exe setup.py install
- Account, Queue, Topic, Subscription均不是线程安全的,多线程 场景下请独立构造对象;
- 访问阿里云官网获取的AccessKeyId、AccessKeySecret、AccountId;
- 访问阿里云消息服务官网,进入控制台获取Endpoint;
- 将AccessKeyId、AccessKeySecret、Endpoint填写到sample.cfg中;
- linux平台运行"python sample.py",Windows平台运行"python.exe sample.py"。
- 下载并安装M2Crypto, 地址:https://pypi.python.org/pypi/M2Crypto;
- linux平台运行"python simple_notify_endpoint.py [port]",Windows平台运行"python.exe simple_notify_endpoint.py [port]", 端口号默认为8000;
- 启动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的属性 命令:mnscmd getaccountattr
-
列出创建的queue 命令:mnscmd listqueue 如果是刚刚使用MNS的用户因为没有创建queue,输出是空
-
创建queue 命令:mnscmd createqueue --queuename=myqueue 帮助:mnscmd createqueue --info "myqueue"可以根据需求修改为符合规则的queue name queue name的详细规则请移步阿里云消息服务官方网站 更多属性指定,运行帮助命令
-
获取queue 命令:mnscmd getqueueattr --queuename=myqueue 命令返回queue的各项属性
-
设置queue属性 命令:mnscmd setqueueattr --queuename=myqueue --delaysec=5 帮助:mnscmd setqueueattr --info 设置queue的delayseconds为5秒 更多属性设置,运行帮助命令
-
发送message 命令:mnscmd sendmessage --queuename=myqueue --body="I am a test message." 帮助:mnscmd sendmessage --info 发送一条消息到队列myqueue中 更多属性指定,运行帮助命令
-
查看message 命令:mnscmd peekmessage --queuename=myqueue 查看myqueue中的第一条消息
-
消费message 命令:mnscmd receivemessage --queuename=myqueue 消费myqueue中的第一条消息 命令返回消息基本信息和临时句柄(ReceiptHandle)
-
修改message下次可消费时间 命令:mnscmd changevisibility --queuename=myqueue --handle=YOUR_RECEIPTHANDLE --vistimeout=10 YOUR_RECEIPTHANDLE是receivemessage返回的ReceiptHandle 消息10秒后可再次被消费,命令返回新的ReceiptHandle
-
删除message 命令:mnscmd deletemessage --queuename=myqueue --handle=YOUR_RECEIPTHANDLE YOUR_RECEIPTHANDLE是最近一次操作返回的ReceiptHandle,即第9步返回的ReceiptHandle
-
删除queue 命令:mnscmd deletequeue --queuename=myqueue 注意,如果queue中有message,所有message都会被删除
-
列出创建的topic 命令:mnscmd listtopic 帮助:mnscmd listtopic --info 命令返回topic的URL列表,--prefix指定topic名称的前缀,--retnum指定返回的topic个数,--marker指定topic的起始位置
-
创建topic 命令:mnscmd createtopic --topicname=mytopic 帮助:mnscmd createtopic --info 创建名称为"my topic"的主题,"my topic"可以根据需要修改为符合规则的topic name topic name的详细规则请移步阿里云消息服务官方网站
-
获取topic属性 命令:mnscmd gettopicattr --topicname=mytopic 帮助:mnscmd gettopicattr --info 命令获取topic的各项属性
-
设置topic属性
命令:mnscmd settopicattr --topicname=mytopic --maxmsgsize=1024 帮助:mnscmd settopicattr --info 设置topic的最大消息长度1024 Byte -
发布消息 命令:mnscmd publishmessage --topicname=mytopic --body="I am a test message." 帮助:mnscmd publishmessage --info 发送一条消息到主题mytopic中
-
列出topic的subscription 命令:mnscmd listsub --topicname=mytopic 帮助:mnscmd listsub --info 命令返回订阅mytopic的subscription URL列表,--prefix指定subscription名称的前缀,--retnum指定返回的subscription个数,--marker指定起始位置
-
创建subscription 命令:mnscmd subscribe --topicname=mytopic --subname=mysub --endpoint=http://test-endpoint 帮助:mnscmd subscribe --info 创建一个名叫mysub的subscription,订阅mytopic,指定endpoint为:http://test-endpoint
-
获取subscription属性 命令:mnscmd getsubattr --topicname=mytopic --subname=mysub 帮助:mnscmd getsubattr --info 获取mysub的各项属性
-
设置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
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的发送、查看、消费、删除和修改下次可消费时间。