消息百分百投递方案二 RPC ReSend Command 问题

来源:3-3 消息如何保障 100% 的投递成功方案-2

qq_哈之仆_0

2018-09-05

在下图中,主要关注 RPC ReSend Command 操作

http://img.mukewang.com/szimg/5b8f3f500001bb6610000521.jpg

我想了一下,调用 RPC 的情况下

第一种可能是直接调用之前发送消息的方法,但是这个方法里面可能还有其他操作(比如一共发送了三个消息,当前触发 RPC ReSend 的只是其中一个方法),这样会影响比较大。

第二种可能是单独将发送消息的操作 Extract Method,然后 RPC ReSend 去调用这个抽取出来的方法,这样做,会写多余的代码。 

其次,RPC 操作本身还有超时的问题。

所以我想,在 Step 2 的时候将整个消息都延迟发送到 CallBackService,如果发现 MSG DB 还没有记录,是不是可以不调用 RPC,直接在 CallBackService 里面进行消息重发。这样整体处理比较简单。


写回答

2回答

阿神

2018-09-05

还是没有具体的场景。。想多了。,可能你理解了怎么用,但是没理解怎么实现,可以先按照自己的想法来

0
4
qq_哈之仆_0
回复
阿神
嗯,我实践的时候,使用 Redis 对每个消息进行缓存,重试的时候用消息 Id 获取消息体进行重试。然后消息应该还要封装下,将 exchange、queue、请求头信息都一起封装存储。减少差异性,比较好共用。
2018-09-05
共4条回复

阿神

2018-09-05

还是没有具体的场景。。想多了。,可能你理解了怎么用,但是没理解怎么实现,可以先按照自己的想法来

0
0

RabbitMQ精讲 从0到1驾驭RabbitMQ应用与设计

从0到1,全面深入掌握RabbitMQ消息中间件技术

1460 学习 · 443 问题

查看课程