閱讀65 返回首頁    go windows


HTTP 定時消息__HTTP 接入(簡單)_消息隊列 MQ-阿裏雲

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()

最後更新:2016-11-23 16:04:20

  上一篇:go Python 收發消息__HTTP 接入(簡單)_消息隊列 MQ-阿裏雲
  下一篇:go HTTP 消息查詢__HTTP 接入(簡單)_消息隊列 MQ-阿裏雲