上云无忧 > 文档中心 > 腾讯云消息队列 CMQ 版 - HTTP Endpoint 订阅
消息队列 CMQ 版
腾讯云消息队列 CMQ 版 - HTTP Endpoint 订阅

文档简介:
投递描述: CMQ 通过发送 POST 请求将主题消息推送到订阅的 HTTP Endpoint 端,消息格式支持两种:JSON 格式和 SIMPLIFIED 精简格式。 JSON 格式:推送的 HTTP 请求 Body 包含消息的正文和消息的属性信息。Content-type 为 text/plain。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

投递描述

CMQ 通过发送 POST 请求将主题消息推送到订阅的 HTTP Endpoint 端,消息格式支持两种:JSON 格式和 SIMPLIFIED 精简格式。
JSON 格式:推送的 HTTP 请求 Body 包含消息的正文和消息的属性信息。Content-type 为 text/plain
SIMPLIFIED 格式:推送的 HTTP 请求 Body 即为消息正文,而 msgId 等信息会在 HTTP 请求 Header 中传递给订阅方。
订阅方的 HTTP 服务返回标准的 2xx 响应(如200),代表投递成功,否则为投递失败,并触发重试投递策略;超时不响应,CMQ 也会认为失败,同样触发重试投递策略,检测超时时间约为15秒。

投递的 HTTP 请求 Header

参数名称
描述
x-cmq-request-id
此次推送消息的 requestId
x-cmq-message-id
此次推送消息的 msgId
x-cmq-message-tag
此次推送消息的消息标签

投递的 HTTP 请求 Body

在 JSON 格式下,HTTP Body 包含消息的正文和消息的属性信息。
参数名称
类型
描述
TopicOwner
String
被订阅的主题拥有者的 APPID
topicName
String
主题名称
subscriptionName
String
订阅名称
msgId
String
消息 ID
msgBody
String
消息正文
publishTime
Int
消息的发布时间
在 SIMPLIFIED 格式下,HTTP Body 即为发布者发布的消息正文。

投递的 HTTP 请求响应

订阅方 HTTP 服务正常处理投递消息,返回 2xx 响应;其他响应码或者超时不响应,当作错误,并触发重试投递策略。

请求示例

本示例中,订阅的 HTTP Endpoint 为http://test.com/cgi。 JSON 格式:

		
POST /cgi HTTP/1.1
Host: test.com
Content-Length: 761
Content-Type: text/plain
User-Agent: Qcloud Notification Service Agent
x-cmq-request-id: 2394928734
x-cmq-message-id: 6942316962
x-cmq-message-tag: a, b

{"TopicOwner":100015036,"topicName":"MyTopic","subscriptionName":"mysubscription","msgId":"

6942316962","msgBody":"test message","publishTime":11203432}

SIMPLIFIED 格式:
		
POST /cgi HTTP/1.1
Host: test.com
Content-Length: 123
Content-Type: text/plain
User-Agent: Qcloud Notification Service Agent
x-cmq-request-id: 2394928734
x-cmq-message-id: 6942316962
x-cmq-message-tag: a, b
test message

订阅消息示例

如下为订阅消息 Demo,投递消息均为 POST 方法,因此只需重写 do_POST 方法即可。 本示例会打印接收到的 HTTP POST 请求内容,并将 post data json 反序列化,实现遍历打印请求数据。
		
#!/usr/bin/python
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
import json
class TestHTTPHandle(BaseHTTPRequestHandler):
def do_POST(self):
content_len = int(self.headers.getheader('content-length',0))
post_body = self.rfile.read(content_len)
print "receive cmq topic publisher request:"
print self.headers
print post_body
post_data = json.loads(post_body)
for k,v in post_data.iteritems():
print "key:%s value:%s" % (k,v)
#response http status 200
self.send_response(200)
self.end_headers()
self.wfile.write('ok')
def start_server(port):
http_server = HTTPServer(('0.0.0.0', int(port)),TestHTTPHandle)
http_server.serve_forever()
if __name__ == '__main__':
start_server(80)
相似文档
  • 新版 CMQ 与原 CMQ 参数差异说明: 新版 CMQ 在数据流(消息收发)SDK 的用法和语法上与原 CMQ 一致,但有些参数与特性会和原 CMQ 有一定的差异。这些差异新版 CMQ 会通过特殊设置这些参数来保证在您迁移之后不会改变原有的生产消费逻辑,但如果是新建的队列或主题则尽可能参考新 CMQ 的逻辑进行设置。
  • TDMQ CMQ 版可以使用外网域名吗? TDMQ CMQ 版可以使用外网域名,具体地址在控制台的 API请求地址获取。推荐您使用内网域名,使用外网会收取流量费用,且外网时延可能费用较高。
  • 删除消息失败时如何处理? 删除消息失败可能是因为消息句柄超时了。队列属性 visibilityTimeout 表明了消息的可见时间,如果从消费消息到删除消息超过了这个时间,那么消息句柄就会失效,从而导致无法删除消息。
  • 为使用腾讯云消息队列 CMQ 版服务(以下简称“本服务”),您应当阅读并遵守《消息队列 CMQ 版服务等级协议》(以下简称“本协议” 或“SLA”),以及《腾讯云服务协议》。本协议包含本服务的术语和定义、服务可用性/服务成功率等级指标、赔偿方案、免责条款等相关内容。请您务必审慎阅读、充分理解各条款内容,限制、免责条款或者其他涉及您重大权益的条款可能会以加粗、加下划线等形式提示您重点注意。
  • 微服务引擎(Tencent Cloud Service Engine,TSE)是一款微服务应用管理中间件,通过将微服务核心的组件(注册中心、配置中心等)进行云上服务托管,提供快速部署、租户隔离、高可用容灾、免运维、无缝迁移服务等功能优势,满足用户基于开源框架快速实现微服务架构转型需求。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部