2022年阿里云消息队列用户指南 .pdf

上传人:Q****o 文档编号:27867119 上传时间:2022-07-26 格式:PDF 页数:23 大小:821KB
返回 下载 相关 举报
2022年阿里云消息队列用户指南 .pdf_第1页
第1页 / 共23页
2022年阿里云消息队列用户指南 .pdf_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《2022年阿里云消息队列用户指南 .pdf》由会员分享,可在线阅读,更多相关《2022年阿里云消息队列用户指南 .pdf(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、阿里云消息队列服务(MQS)入门指南阿里云消息队列服务( MQS )入门指南名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南目录1. Welcome . 32. 简介 . 32.1 MQS 服务的特点 . 32.2 消息生命周期 . 43. 准备工作 . 43.1 注册并登陆 . 53.2 获取公测资格并开通服务. 53.2 Access Key ID和 Access Key Secret

2、. 83.4 通过管理控制台体验产品. 83.5 通过 API 或 SDK使用产品 . 84.使用 MQS . 84.1 CreateQueue . 94.2 SetQueueAttributes . 10 4.3 GetQueueAttributes . 12 4.4 DeleteQueue . 14 4.5 ListQueue . 15 4.6 SendMessage . 16 4.7 ReceiveMessage . 18 4.8 DeleteMessage . 19 4.9 PeekMessage . 20 4.10 ChangeMessageVisibility . 21 5. 用户

3、反馈 . 22 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南1. Welcome 欢迎使用阿里云提供的消息队列服务(Message Queue Service,简称 MQS ) 。2. 简介MQS是一种高效、可靠、安全、便捷、可弹性扩展的分布式消息队列服务。MQS能够帮助应用开发者在他们应用的分布式组件上自由的传递数据,构建松耦合系统。2.1 MQS 服务的特点易用且不失扩展性:提供遵照

4、RESTful 标准的API 访问接口,您无需担心任何兼容性题;可以和其他阿里云服务结合使用,例如ECS、RDS、和 OSS,从而让您的应用程序更可靠、可扩展性更强。丰富的队列属性配置:我们提供了丰富的队列属性配置选项,您可以进行队列属性的个性化配置来满足不同的应用场景,支持:普通队列、延迟队列、优先级队列等多种队列模式。支持并发访问: 支持多个生产者和消费者并发访问同一个消息队列,并能确保某条消息在取出之后的特定时间段内,无法被其他消费者获得。消息投递保障及访问控制:在消息有效期内,确保消息至少能被成功消费一次。接入阿里云账号体系,用户间资源隔离,确保您队列中的消息不会被非法获取。名师资料总

5、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南2.2 消息生命周期3. 准备工作在使用 MQS 服务前,需要做如下准备工作:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南3.1 注册并登陆访问阿

6、里云官网 ,如果已有阿里云账号,直接登录;如果没有阿里云账号,根据提示注册账号后登录。3.2 获取公测资格并开通服务初期, MQS 产品仅面向那些有公测资格的用户开通服务,所以您需要首先申请该服务的公测资格成功后再开通服务。在 MQS 产品详情页 或管理控制台 中选择“立即开通”按钮,系统会判断您当前是否已经具备公测资格,如果具备请根据提示开通服务;如果不具备, 请根据提示申请公测资格。1.通过 MQS 产品详情页或管理控制台,选择立即开通服务:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

7、 - 第 5 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南2.根据提示完成公测资格申请:提示申请公测资格:填写表单申请公测资格:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南公测资格申请提交成功:3.获得公测资格后正式开通服务:重新选择立即开通服务:开通服务成功:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -

8、- - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南3.2 Access Key ID 和 Access Key Secret 登录 阿里云官网 后,进入 用户中心 -我的服务 -安全认证 , 可查看自己的Access Key ID 和 Access Key Secret。 用户最多可以创建5 个 Access Key ; 同时,对已有的 Access Key 可以进行启用和禁用操作。3.4 通过管理控制台体验产品访问 MQS 管理控制台 。目前,可以通过管理控制台体验与Qu

9、eue相关的所有操作,主要的功能包括:创建消息队列、管理和查看消息队列、删除消息队列。3.5 通过 API 或 SDK 使用产品API 手册: http:/ SDK 开发包: http:/ SDK开发包: http:/ MQS 我们将通过如下使用指引来帮助您完成一些简单的操作任务:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南4.1 CreateQueue 首先使用阿里云MQS 创建一个队

10、列,在以下的示例中命名为“MyQueue” 。管理控制台单击 创建队列 ,在弹出对话框中填写队列属性,单击确定 ,队列创建成功。(参数说明详见 MQS API文档 4.2.1 节)JAVA 使 用 自 己 的QueueOwnerId、 Region、 QueueName、 AccessKeyID和AccessKeySecret依次替换示例代码“ ”部分。MQSClient client= newDefaultMQSClient(http:/.mqs-, , ); String queueName =MyQueue ; QueueMeta meta = new QueueMeta(); meta

11、.setQueueName(queueName); meta.setDelaySeconds(0L); /发送到该 Queue 所有消息的延迟可见时间,单位为秒meta.setMaxMessageSize(65530L); / 消息体的最大长度,单位为bytemeta.setMessageRetentionPeriod(345600L); / 消息的最长存活时间,单位为秒meta.setVisibilityTimeout(30L); / 消息取出后维持不可见状态的时间,单位为秒meta.setPollingWaitseconds(0);/ 长轮询等待时间,单位为秒,默认为0try CloudQ

12、ueue queue = client.getQueueRef(queueName); / 通过 client结构生成本名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南Python 4.2 SetQueueAttributes 确定“ MyQueue”创建成功后,对“MyQueue”的属性进行设置。管理控制台在 MyQueue所在节点的消息队列列表页,选择操作中的修改队列 。管理控制台弹出对

13、话框,在需要修改的属性框中进行设置,单击确认 ,队列属性修改成功。(参数说明详见 MQS API文档 4.2.2 节 )地的 Queue 对象queue.create(meta); /向MQS 服务器发送请求,生成以queueName 为名的队列 catch (ServiceException ex) /do somethingmqs_client = MQSClient(http:/.mqs-, , ) queue_name = MyQueue my_queue = Queue(queue_name, mqs_client) queue_meta = QueueMeta() queue_me

14、ta.set_visibilitytimeout(100) queue_meta.set_maximum_message_size(10240) queue_meta.set_message_retention_period(3600) queue_meta.set_delay_seconds(3) queue_meta.set_polling_wait_seconds(10) try: queue_url = my_queue.create(queue_meta) print Create Queue Succeed:%sn % queue_url except MQSExceptionBa

15、se, e: print Create Queue Fail:, e sys.exit(1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南JAVA MQSClient client= newDefaultMQSClient(http:/.mqs-, , ); String queueName =MyQueue ; try CloudQueue queue = client.getQue

16、ueRef(queueName); QueueMeta queueMeta = queue.getAttributes(); / 如果 Queue未创建,则此处/ 抛出异常提示QueueNotExist,通过 4.1 节方法进行创建queueMeta.setDelaySeconds(50L); queue.setAttributes(queueMeta); catch (ServiceException ex) /do something Python mqs_client = MQSClient(http:/.mqs-, , ) queue_name = MyQueue my_queue =

17、 Queue(queue_name, mqs_client) queue_meta = QueueMeta() queue_meta.set_visibilitytimeout(70) queue_meta.set_maximum_message_size(9999) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南4.3 GetQueueAttributes 确定“ MyQueue”创建

18、成功后,获取“MyQueue”的队列属性。管理控制台在 MyQueue所在节点的消息队列列表页,选择操作中的修改队列 ,显示队列的属性值,如果只是查看队列各项属性,那么确定按钮为灰;如果需要修改具体的属性值,如4.2 所示当某项属性值被编辑后确定按钮被激活。(参数说明详见MQS API文档 4.2.3 节)JAVA MQSClient client= newqueue_meta.set_message_retention_period(1234) queue_meta.set_delay_seconds(2) queue_meta.set_polling_wait_seconds(12) tr

19、y: queue_url = my_queue.set_attributes(queue_meta) print Set Queue Attributes Succeed! except MQSExceptionBase, e: print Set Queue Attributes Fail:, e sys.exit(1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南DefaultMQ

20、SClient(http:/.mqs-, , ); String queueName =MyQueue ; try CloudQueue queue = client.getQueueRef(queueName); QueueMeta queueMeta = queue.getAttributes(); System.out.println(queueMeta.getQueueName(); / 队列名称System.out.println(queueMeta.getDelaySeconds(); /队列延迟属性System.out.println(queueMeta.getMessageRe

21、tentionPeriod();/ 存活时间System.out.println(queueMeta.getMaxMessageSize();/ 消息最大长度System.out.println(queueMeta.getCreateTime();/ 队列创建时间System.out.println(queueMeta.getLastModifyTime();/ 队列最近修改时间System.out.println(queueMeta.getActiveMessages();/ 活跃的消息数System.out.println(queueMeta.getInactiveMessages();/

22、 非活跃消息数System.out.println(queueMeta.getQueueURL();/队列访问的 URL地址System.out.println(queueMeta.getPollingWaitSeconds();/ 长轮询等待时间 catch (ServiceException ex) /do something Python mqs_client = MQSClient(http:/.mqs-, , ) queue_name = MyQueue my_queue = Queue(queue_name, mqs_client) try: queue_meta = my_que

23、ue.get_attributes() print Get Queue Attributes Succeed! Queue Name: %s % queue_meta.queue_name print visibility_timeout is %s % queue_meta.visibility_timeout print maximum_message_size is %s % queue_meta.maximum_message_size print delay_seconds is %s % queue_meta.delay_seconds print polling_wait_sec

24、onds is %s % queue_meta.polling_wait_seconds print active_messages is %s % queue_meta.active_messages print inactive_messages is %s % queue_meta.inactive_messages print delay_messages is %s % queue_meta.delay_messages print create_time is %s % queue_meta.create_time print last_modify_time is %s % qu

25、eue_meta.last_modify_time except MQSExceptionBase, e: print Get Queue Attributes Fail:, e sys.exit(1)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南4.4 DeleteQueue 确定“ MyQueue”创建成功后,删除“MyQueue” 。管理控制台在 MyQueue所在节点的消息队列列

26、表页,选择操作中的删除队列 。管理控制台弹出对话框,提示是否确认删除队列,单击删除 ,队列删除成功。(参数说明详见MQS API文档 4.2.4 节 )JAVA MQSClient client= newDefaultMQSClient(http:/.mqs-, , ); String queueName =MyQueue ; try CloudQueue queue = client.getQueueRef(queueName); queue.delete(); catch (ServiceException ex) /do something Python mqs_client = MQS

27、Client(http:/.mqs-, , ) queue_name = MyQueue my_queue = Queue(queue_name, mqs_client) try: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南4.5 ListQueue 列出 Account下以特定前缀开头的所有队列。管理控制台在 MyQueue所在节点的消息队列列表页队列查询 框中输入对应的前缀字符串

28、,单击 搜索 ,列出相关队列。(参数说明详见MQS API文档 4.2.5 节)JAVA MQSClient client= newDefaultMQSClient(http:/.mqs-, , ); String queueName =MyQueue ; String marker = null; try do PagingListResult list = client.listQueueURL(“” , marker,2); /第一个参数为queue 名称的前缀 my_queue.delete() print Delete Queue Succeed! except MQSExcepti

29、onBase, e: print Delete Queue Fail:, e sys.exit(1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南 /第二个参数 marker 为下一个分页的开始位置 /第三个参数为一次list返回的最多队列个数 List queues = list.getResult();/ 返回 Queue 的URL for (int i = 0; i queues

30、.size(); i+) System.out.println(queues.get(i); marker = list.getMarker(); while(marker != null & marker != “” ); catch (ServiceException ex) /do something Python 4.6 SendMessage 确定“ MyQueue”创建成功后,向“MyQueue”发送消息。管理控制台当前线上管理控制台暂不支持Message相关的操作。 (参数说明详见MQS API 文account = Account(http:/.mqs-, , ) try: m

31、arker = while(True): queue_url_list, next_marker = account.list_queue(prefix = , ret_number = 10, marker = marker) print List Queue Succeed! for queue_url in queue_url_list: print queue_url if(next_marker = ): break marker = next_marker except MQSExceptionBase, e: print List Queue Fail:, e sys.exit(

32、1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南档 4.3.1 节)JAVA MQSClient client= newDefaultMQSClient(http:/.mqs-, , ); String queueName =MyQueue ; try CloudQueue queue = client.getQueueRef(queueName); Message message

33、= new Message(); message.setMessageBody(I am test message.); message.setPriority(8) / 消息的优先级,优先级越高的消息,越容易更早被消费queue.putMessage(message); catch (ServiceException ex) /do something Python mqs_client = MQSClient(http:/.mqs-, , ) queue_name = MyQueue my_queue = Queue(queue_name, mqs_client) msg_body = I

34、 am test Message. message = Message(msg_body) message.set_delayseconds(2) message.set_priority(10) try: send_msg = my_queue.send_message(message) print Send Message Succeed.nMessageBody:%snMessageId:%snMessageBodyMd5:%sn % (msg_body, send_msg.message_id, send_msg.message_body_md5) except MQSExceptio

35、nBase, e: print Send Message Fail:, e sys.exit(1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南4.7 ReceiveMessage 确定“ MyQueue”创建成功后,从“MyQueue”中取出 message ,跟我们发送到“MyQueue”的消息进行对比,确定拿到的消息跟我们发送的消息一致,并记录下返回的 ReceiptHandle

36、。管理控制台当前线上管理控制台暂不支持Message相关的操作。 (参数说明详见MQS API 文档 4.3.2 节)JAVA MQSClient client= newDefaultMQSClient(http:/.mqs-, , ); String queueName =MyQueue ; try CloudQueue queue = client.getQueueRef(queueName); Message msg = queue.popMessage(); String messageBody = msg.getMessageBodyAsString(); String msgId

37、= msg.getMessageId(); String receiptHandle = msg.getReceiptHandle(); catch (ServiceException ex) /do something Python mqs_client = MQSClient(http:/.mqs-, , ) queue_name = MyQueue my_queue = Queue(queue_name, mqs_client) try: recv_msg = my_queue.receive_message() print Receive Message Succeed! 名师资料总结

38、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南4.8 DeleteMessage 验证消息正确后,使用上一步获取到的ReceiptHandle删除刚才取出来的message 。(参数说明详见MQS API文档 4.3.3 节)管理控制台当前线上管理控制台暂不支持Message相关的操作。 (参数说明详见MQS API 文档 4.3.3 节)JAVA MQSClient client= newDefa

39、ultMQSClient(http:/.mqs-, , ); String queueName =MyQueue ; try CloudQueue queue = client.getQueueRef(queueName); queue.deleteMessage(); /传入 receive message时的 ReceiptHandle catch (ServiceException ex) /do something print message_id is %s % recv_msg.message_id print message_body_md5 is %s % recv_msg.m

40、essage_body_md5 print message_body is %s % recv_msg.message_body print dequeue_count is %s % recv_msg.dequeue_count print enqueue_time is %s % recv_msg.enqueue_time print first_dequeue_time is %s % recv_msg.first_dequeue_time print priority %s % recv_msg.priority print next_visible_time %s % recv_ms

41、g.next_visible_time print receipt_handle is %s % recv_msg.receipt_handle except MQSExceptionBase, e: print Receive Message Fail:, e sys.exit(1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南Python 4.9 PeekMessage 查看“ M

42、yQueue”中队列第一条消息的内容。(参数说明详见MQS API文档 4.3.4节)管理控制台当前线上管理控制台暂不支持Message相关的操作。 (参数说明详见MQS API 文档 4.3.4 节) JAVA MQSClient client= newDefaultMQSClient(http:/.mqs-, , ); String queueName =MyQueue ; try CloudQueue queue = client.getQueueRef(queueName); Message msg = queue.peekMessage(); String messageBody =

43、 msg.getMessageBodyAsString(); catch (ServiceException ex) /do somethingmqs_client = MQSClient(http:/.mqs-, , ) queue_name = MyQueue my_queue = Queue(queue_name, mqs_client) try: #传入 receive message时的 ReceiptHandlemy_queue.delete_message(recv_msg.receipt_handle) print Delete Message Succeed. except

44、MQSExceptionBase, e: print Delete Message Fail:, e sys.exit(1) my_queue = Queue(MyQueue , mqs_client) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南 Python 4.10 ChangeMessageVisibility 在 ReceiveMessage获取一条消息之后,改变其不可见时间

45、。(参数说明详见MQS API文档 4.3.5 节)控制台在 ReceiveMessage获取一条消息之后,改变其不可见时间。(参数说明详见MQS API文档 4.3.5 节)JAVA MQSClient client= newDefaultMQSClient(http:/.mqs-, , ); String queueName =MyQueue ; mqs_client = MQSClient(http:/.mqs-, , ) queue_name = MyQueue my_queue = Queue(queue_name, mqs_client) try: peek_msg = my_qu

46、eue.peek_message() print Peek Message Succeed! print message_id is %s % peek_msg.message_id print message_body_md5 is %s % peek_msg.message_body_md5 print message_body is %s % peek_msg.message_body print dequeue_count is %s % peek_msg.dequeue_count print enqueue_time is %s % peek_msg.enqueue_time pr

47、int first_dequeue_time is %s % peek_msg.first_dequeue_time print priority %s % peek_msg.priority except MQSExceptionBase, e: print Peek Message Fail:, e sys.exit(1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 23 页 - - - - - - - - - 阿里云消息队列服务(MQS)入门指南try Clo

48、udQueue queue = client.getQueueRef(queueName); Message message = new Message(); message.setMessageBody(“ test” ); queue.putMessage(message); / 发送一条消息Message msg = queue.popMessage(); / 接收消息String newReceiptHandle = queue.changeMessageVisibilityTimeout( msg.getReceiptHandle(), 50) /第一个参数为旧的ReceiptHan

49、dle值,第二个参数为新的不可见时间(VisibilityTimeout) catch (ServiceException ex) /do something Python 5. 用户反馈恭喜你已经成功的创建一个队列,并完成了发送消息、消费消息和删除消息的操作。其他更多的操作,请依照API 文档的指引来逐一实现。在使用的过程中有任何的疑问或者建mqs_client = MQSClient(http:/.mqs-, , ) queue_name = MyQueue my_queue = Queue(queue_name, mqs_client) try: recv_msg = my_queue.

50、receive_message() change_msg_vis = my_queue.change_message_visibility(recv_msg.receipt_handle, 35) print Change Message Visibility Succeed! print receipt_handle is %s % change_msg_vis.receipt_handle print next_visible_time is %s % change_msg_vis.next_visible_time except MQSExceptionBase, e: print Ch

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁