1、安装mq_http_sdk
pip install mq_http_sdk
2、前期准备
2.1 http协议地址
2.2 实例id
2.3 topic
2.4 group
2.5 AccessKey ID 和 AccessKey Secret
RocketMQ HTTP协议代码实现
from mq_http_sdk.mq_client import *
from mq_http_sdk.mq_producer import *
from mq_http_sdk.mq_exception import MQExceptionBase
class RocketMq(object):
def __init__(self):
self.host = '${HTTP_ENDPOINT}'
self.topic = '${TOPIC}'
self.group = '${GROUP}'
self.accessKey = '${ACCESSKEY}'
self.secretKey = '${SECRETKEY}'
self.instance_id = '${INSTANCE_ID}'
self.client = MQClient(self.host, self.accessKey, self.secretKey)
def producer_(self, timing=False, times=None):
"""
生产者
:param timing: True,False
:param times: 单位ms 毫秒级绝对时间 int(round(time.time() * 1000)) + 5 * 1000
:return:
"""
print('=======start===')
producer = self.client.get_producer(self.instance_id, self.topic)
msg = TopicMessage('{"key": "value"}')
msg.set_message_key(self.accessKey)
if timing:
msg.set_start_deliver_time(times)
print(msg)
re_msg = producer.publish_message(msg)
print("Publish Message Succeed. MessageID:%s, BodyMD5:%s" % (re_msg.message_id, re_msg.message_body_md5))
def consumer_(self):
consumer = self.client.get_consumer(self.instance_id, self.topic, self.group)
while True:
try:
wait_seconds = 3
batch = 3
for msg in consumer.consume_message(batch, wait_seconds):
print(("Receive, MessageId: %s\nMessageBodyMD5: %s \
\nMessageTag: %s\nConsumedTimes: %s \
\nPublishTime: %s\nBody: %s \
\nNextConsumeTime: %s \
\nReceiptHandle: %s \
\nProperties: %s\n" % (msg.message_id, msg.message_body_md5,
msg.message_tag, msg.consumed_times,
msg.publish_time, msg.message_body,
msg.next_consume_time, msg.receipt_handle,
msg.properties)))
consumer.ack_message([msg.receipt_handle])
except MQExceptionBase as e:
if e.type == "MessageNotExist":
print(("No new message! RequestId: %s" % e.req_id))
continue
print(("Consume Message Fail! Exception:%s\n" % e))
time.sleep(2)