开发者社区 问答 正文

HTTP 接入如何使用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()

展开
收起
猫饭先生 2017-10-27 10:26:35 1752 分享 版权
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址: