全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
消息队列 MQ

HTTP 定时消息

更新时间:2017-08-24 17:41:21

MQ 的定时消息是指在规定的时间发给消费者进行消费的消息。相比于普通消息,定时消息多了消费时间戳属性,该属性主要用于定义消息正式发送给消费者进行消费的时间。下面会简要介绍 HTTP 定时消息的主要用法。

属性说明

需要在发送消息里面添加时间戳,该时间戳用于标记当前消息消费的时间,参数名称为:startdelivertime

HTTP 定时消息示例代码

下面的示例程序是用 Python 语言编写的,其它类语言只需在相应的 URL 上添加定时消费的时间戳即可。具体添加方法,请参考如下示例。

  1. class HttpProducer(object):
  2. def __init__(self):
  3. """签名值"""
  4. self.signature = "Signature"
  5. """生产者组ID"""
  6. self.producerid = "ProducerId"
  7. """消息主题"""
  8. self.topic = "topic"
  9. """访问码"""
  10. self.ak = "AccessKey"
  11. """配置文件解析器"""
  12. self.cf = ConfigParser.ConfigParser()
  13. """MD5对象"""
  14. self.md5 = hashlib.md5()
  15. """
  16. 发送Topic主流程
  17. """
  18. def process(self):
  19. """读取配置文件"""
  20. self.cf.read("user.properties")
  21. """读取消息主题"""
  22. topic = self.cf.get("property","topic")
  23. """存储消息URL路径"""
  24. url = self.cf.get("property","url")
  25. """访问码"""
  26. ak = self.cf.get("property","user_accesskey")
  27. """密钥"""
  28. sk = self.cf.get("property","user_secretkey")
  29. """生产者组ID"""
  30. pid = self.cf.get("property","producer_group")
  31. """HTTP请求主体内容"""
  32. content = U"中文".encode('utf-8')
  33. """分隔符"""
  34. newline = "\n"
  35. """获取URL域名地址"""
  36. urlname = urlparse(url).hostname
  37. """根据HTTP主体内容计算MD5值"""
  38. self.md5.update(content)
  39. """建立HTTP连接对象"""
  40. conn = httplib.HTTPConnection(parseURL(urlname))
  41. try:
  42. for index in range(0,10):
  43. """时间戳"""
  44. date = repr(int(time.time())*1000)[0:13]
  45. """构造签名字符串"""
  46. signString = str(topic + newline + pid + newline + self.md5.hexdigest() + newline + date)
  47. """计算签名"""
  48. sign = calSignature(signString,sk)
  49. """内容类型"""
  50. contentFlag ="Content-type"
  51. """HTTP请求头部对象"""
  52. headers = {
  53. self.signature : sign,
  54. self.ak : ak,
  55. self.producerid : pid,
  56. contentFlag : "text/html;charset=UTF-8"
  57. }
  58. """定时消息时间戳,5秒之后该消息开始消费"""
  59. timeStamp = str(int(time.time()*1000) + 5000);
  60. """开始发送HTTP定时消息"""
  61. conn.request(method="POST",url="/message/?topic="+topic+"&time="+date+"&startdelivertime="+timeStamp+"&tag=http&key=http",
  62. body=content,
  63. headers=headers)
  64. """获取HTTP应答消息"""
  65. response = conn.getresponse()
  66. """读取HTTP应答内容"""
  67. msg = response.read()
  68. print "response:"+msg
  69. except Exception,e:
  70. print e
  71. finally:
  72. conn.close()
  73. """流程入口"""
  74. if __name__ == '__main__':
  75. """创建消息生产者"""
  76. producer = HttpProducer()
  77. """开启生产者流程"""
  78. producer.process()
本文导读目录