编辑: 霜天盈月祭 2013-06-21

三、举例说明 避免重复提交: 场景:A 为生产者,B 为消费者,中间是 CMQ.A 已完成10元转账操作,且将消息发送给 CMQ,CMQ 也已成功 收到.此时网络闪断或者客户端 A 宕机导致服务端应答给客户端 A 失败.A 会认为发送失败,从而再次生产消息. 这会造成重复提交. 解决方法:A 在生产消息时,加入 time 时间戳等信息,生成唯一的 去重key.若生产者 A 由于网络问题判断当前发 送失败,重试时,去重key 沿用第一次发送的 去重key.此时消费者 B可通过 去重key 判断并做去重. (该案例也说明了不能使用 CMQ 的message id 来去重,因为这两条消息有不同的 ID,但却有相同的 body.) 这里要注意的是,生产者A,在发送消息之前,要将去重key做持久化(写磁盘等,避免掉电后丢失) 避免多条相同 body 的消息被过滤: 场景:A 给B转账10元,一共发起5次,每一次提交的 body 内容是一样的.如果消费者粗暴用 body 做去重判断, 就会把5次请求,当做1次请求来处理. 解决方法:A 在生产消息时,加入 time 时间戳等信息.此时哪怕消息 body 一样,生成的 去重key 都是不同的,这 样就满足了多次发送同样内容的需求.

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题