shanghai1943
V2EX  ›  问与答

求助 IM 系统丢消息问题

  •  
  •   shanghai1943 · Jan 14, 2021 · 1148 views
    This topic created in 1956 days ago, the information mentioned may be changed or developed.

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

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

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

    谢谢。

    5 replies    2021-01-14 18:20:16 +08:00
    catror
        1
    catror  
       Jan 14, 2021 via Android
    我觉得你应该去找他们的客服,修改机制。
    p23XnFNH1Wq953rV
        2
    p23XnFNH1Wq953rV  
       Jan 14, 2021
    发消息时记录, 回调时记录, 脚本检测两者数目有差异时, 进行处理
    shanghai1943
        3
    shanghai1943  
    OP
       Jan 14, 2021
    @catror #1 也在提工单和他们沟通中。然而他们对于这种需求估计会有漫长的流程吧,熬不起。。
    shanghai1943
        4
    shanghai1943  
    OP
       Jan 14, 2021
    @derrick1 #2 相当于需要客户端配合处理才行。耗费了一定的成本了。当初选择第三方就是希望能省力的。
    catror
        5
    catror  
       Jan 14, 2021 via Android
    @shanghai1943 临时解决可以跑一个单独的消息服务,不要做反代。消息服务收到回掉后,先把消息存下来,再返回响应。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2823 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 11:40 · PVG 19:40 · LAX 04:40 · JFK 07:40
    ♥ Do have faith in what you're doing.