求助 IM 系统丢消息问题

2021-01-14 15:21:05 +08:00
 shanghai1943

目前在开发 IM 系统,用了 NGINX 来做反向代理,服务端用的是 spring boot,使用了融云的 IM 服务。融云提供了设置消息回调的地址,即,当客户端发出消息的时候,融云这边把消息回调到填写的地址中,但是有个问题是,融云的回调消息只有在超时的情况下才会重发,而不是根据返回的 HTTP 状态码来重发,相当于如果服务正在重启或者宕机的话,不会触发融云的重发机制,因为宕机的时候在融云那边系统看来不算超时。所以有可能会出现丢消息的隐患。

之前想过单独部署机器来专门处理消息回调,虽然处理消息回调的稳定性提高了,但似乎也还是会有丢消息隐患的。

想请问下大家这种情况下该如何避免丢消息?

谢谢。

728 次点击
所在节点    问与答
5 条回复
catror
2021-01-14 15:51:57 +08:00
我觉得你应该去找他们的客服,修改机制。
derrick1
2021-01-14 15:58:19 +08:00
发消息时记录, 回调时记录, 脚本检测两者数目有差异时, 进行处理
shanghai1943
2021-01-14 16:04:29 +08:00
@catror #1 也在提工单和他们沟通中。然而他们对于这种需求估计会有漫长的流程吧,熬不起。。
shanghai1943
2021-01-14 16:06:09 +08:00
@derrick1 #2 相当于需要客户端配合处理才行。耗费了一定的成本了。当初选择第三方就是希望能省力的。
catror
2021-01-14 18:20:16 +08:00
@shanghai1943 临时解决可以跑一个单独的消息服务,不要做反代。消息服务收到回掉后,先把消息存下来,再返回响应。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/744918

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX