tencent cloud

All product documents
APIs
Delivering Message
Last updated: 2024-12-18 17:45:20
Delivering Message
Last updated: 2024-12-18 17:45:20

Queue Endpoint Subscription

CMQ can publish the message text of a topic and deliver it to the subscribed queue, so consumers can read it from the queue.

HTTP Endpoint Subscription

Delivery description

CMQ can push topic messages to the subscribed HTTP endpoint by sending POST requests. The message can be in JSON or SIMPLIFIED format.
JSON format: the body of the pushed HTTP request contains the message body and attribute information. The Content-type is text/plain.
SIMPLIFIED format: the body of the pushed HTTP request is the message body, while information such as msgId will be delivered to the subscriber in the HTTP request header.
If the HTTP service of the subscriber returns a standard 2xx response code (such as 200), the delivery succeeded; otherwise, the delivery failed, and the delivery retry policy has been triggered. If no response is returned after the timeout period elapses, CMQ will also consider the request as a failure and trigger the delivery retry policy. The detection timeout period is about 15 seconds.

Header of HTTP delivery request

Parameter Name
Description
x-cmq-request-id
requestId of the current push message
x-cmq-message-id
msgId of the current push message
x-cmq-message-tag
Tag of the current push message

Body of HTTP delivery request

The body of an HTTP request in JSON format contains the message body and attribute information.
Parameter Name
Type
Description
TopicOwner
String
APPID of the owner of the subscribed topic
topicName
String
Topic name
subscriptionName
String
Subscription name
msgId
String
Message ID
msgBody
String
Message body
publishTime
Int
Message published time
The body of an HTTP request in SIMPLIFIED format is the message body published by the publisher.

Response of HTTP delivery request

If a 2xx response code is returned, the HTTP service of the subscriber has normally processed the delivered message; if another response code is returned or no response is returned after the timeout period elapses, an error will be reported, and the delivery retry policy will be triggered.

Sample request

In this sample, the subscribed HTTP endpoint is http://test.com/cgi. JSON format:
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 format:
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

Sample message subscription

The following is a message subscription demo, where all messages are delivered in the POST method; therefore, you only need to rewrite the do_POST method.This sample will print the received HTTP POST request content and deserialize post data json to traverse the printed request data.
#!/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)
Was this page helpful?
You can also Contact Sales or Submit a Ticket for help.
Yes
No

Feedback

Contact Us

Contact our sales team or business advisors to help your business.

Technical Support

Open a ticket if you're looking for further assistance. Our Ticket is 7x24 avaliable.

7x24 Phone Support
Hong Kong, China
+852 800 906 020 (Toll Free)
United States
+1 844 606 0804 (Toll Free)
United Kingdom
+44 808 196 4551 (Toll Free)
Canada
+1 888 605 7930 (Toll Free)
Australia
+61 1300 986 386 (Toll Free)
EdgeOne hotline
+852 300 80699
More local hotlines coming soon