V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
shanghai1943
V2EX  ›  问与答

求助 IM 系统丢消息问题

  •  
  •   shanghai1943 · 2021-01-14 15:21:05 +08:00 · 726 次点击
    这是一个创建于 1197 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    谢谢。

    5 条回复    2021-01-14 18:20:16 +08:00
    catror
        1
    catror  
       2021-01-14 15:51:57 +08:00 via Android
    我觉得你应该去找他们的客服,修改机制。
    derrick1
        2
    derrick1  
       2021-01-14 15:58:19 +08:00
    发消息时记录, 回调时记录, 脚本检测两者数目有差异时, 进行处理
    shanghai1943
        3
    shanghai1943  
    OP
       2021-01-14 16:04:29 +08:00
    @catror #1 也在提工单和他们沟通中。然而他们对于这种需求估计会有漫长的流程吧,熬不起。。
    shanghai1943
        4
    shanghai1943  
    OP
       2021-01-14 16:06:09 +08:00
    @derrick1 #2 相当于需要客户端配合处理才行。耗费了一定的成本了。当初选择第三方就是希望能省力的。
    catror
        5
    catror  
       2021-01-14 18:20:16 +08:00 via Android
    @shanghai1943 临时解决可以跑一个单独的消息服务,不要做反代。消息服务收到回掉后,先把消息存下来,再返回响应。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1138 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:52 · PVG 06:52 · LAX 15:52 · JFK 18:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.